gpt4 book ai didi

awk - 当我在 awk 中使用 strftime 时,它​​会增加一小时。怎么修

转载 作者:行者123 更新时间:2023-12-04 16:20:01 27 4
gpt4 key购买 nike

当我尝试将秒数转换为显示 H:M:S 时,awk 中的 strftime 增加了一小时。
为什么以及如何修复?
埃克斯

echo "3600" | awk '{print strftime("%T",$1)}'
02:00:00 # Here i would like to see 01:00:00

echo "60" | awk '{print strftime("%T",$1)}'
01:01:00 # Here i would like to see 00:01:00

这给出了正确的结果,但这正常吗?

echo "72" | awk '{print strftime("%T",int($1)-3600)}'
00:01:12

编辑:这是一个解决方法,但我现在仍然想知道为什么 strftime 没有给我正确的答案。

echo "3958" | awk '{h=int($0/3600);m=int(($0-h*3600)/60);s=($0-h*3600-m*60);printf "%02d:%02d:%02d\n",h,m,s}'
01:05:58

echo "64" | awk '{h=int($0/3600);m=int(($0-h*3600)/60);s=($0-h*3600-m*60);printf "%02d:%02d:%02d\n",h,m,s}'
00:01:04

最佳答案

在 GNU awk 中,您可以添加 utc 标志以使用世界时码。

来自手册页:

strftime([format [, timestamp[, utc-flag]]])
Formats timestamp according to the specification in format. If utc-flag is present and is non-zero or non-null, the result is in UTC, otherwise the
result is in local time. The timestamp should be of the same form as returned by systime(). If timestamp is missing, the current time of day is used.
If format is missing, a default format equivalent to the output of date(1) is used. See the specification for the strftime() function in ANSI C for the
format conversions that are guaranteed to be available.

例子:

echo "3600" | awk '{print strftime("%T",$1,1)}'
01:00:00

关于awk - 当我在 awk 中使用 strftime 时,它​​会增加一小时。怎么修,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20095718/

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