gpt4 book ai didi

time - 使用 jq 控制台工具格式化时间段

转载 作者:行者123 更新时间:2023-12-02 00:41:41 25 4
gpt4 key购买 nike

我有以毫秒为单位的时间,我想将其格式化为时间段。例如像这样(不必完全像这样):1d 23h 15m 13s。用jq怎么办?

最佳答案

这是一个直接进行计算的解决方案。

 def roundto(n):   (./n|floor)*n ;
def timefmt(ms):
def calcsecs: .s_to_m = (.seconds | roundto(60)) | .secs = .seconds - .s_to_m ;
def calcmins: .minutes = .s_to_m/60 | .m_to_h = (.minutes | roundto(60)) | .mins = .minutes - .m_to_h ;
def calchrs: .hours = .m_to_h/60 | .h_to_d = (.hours | roundto(24)) | .hrs = .hours - .h_to_d ;
def calcdays: .days = .h_to_d/24 ;
def fmtelt(e;u): if e>0 then " \(e)\(u)" else "" end ;
def fmt:
.s = " \(.secs)s"
| .m = fmtelt(.mins; "m")
| .h = fmtelt(.hrs; "h")
| .d = fmtelt(.days; "d")
| "\(.d)\(.h)\(.m)\(.s)"[1:]
;
{seconds: (ms/1000)|floor} | calcsecs | calcmins | calchrs | calcdays | fmt
;
timefmt($ms)

如果此过滤器在 filter.jq 中,则

$ jq -Mnr --argjson ms 1505752580000 -f filter.jq

输出

17427d 16h 36m 20s

对于较小的间隔,仅显示相关字段。例如

$ jq -Mnr --argjson ms 1505750 -f filter.jq

输出

25m 5s

关于time - 使用 jq 控制台工具格式化时间段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46282902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com