Dar*_*ren 31 linux shell timespan date-formatting
我有一个$ i的变量,它是一个shell脚本中的秒,我试图将它转换为24 HOUR HH:MM:SS.壳中有可能吗?
sam*_*hen 74
这是一个有趣的hacky方式来完成你正在寻找的东西=)
date -u -d @${i} +"%T"
Run Code Online (Sandbox Code Playgroud)
说明:
date实用程序允许您从1970-01-01 00:00:00 UTC开始,以字符串为单位指定时间,并以您指定的任何格式输出.-u选项是显示UTC时间,所以也没有因素时区偏移量(因为起始时间从1970年在UTC)date特定的(Linux):
-d部分告诉date从字符串接受时间信息而不是使用now@${i}部分是你如何告诉date那$i是在几秒钟内+"%T"是格式化你的输出.从man date页面:%T time; same as %H:%M:%S.因为我们只关心这个HH:MM:SS部分,所以这适合!gle*_*man 16
另一种方法:算术
i=6789
((sec=i%60, i/=60, min=i%60, hrs=i/60))
timestamp=$(printf "%d:%02d:%02d" $hrs $min $sec)
echo $timestamp
Run Code Online (Sandbox Code Playgroud)
产生 1:53:09
Ala*_*Tam 12
该-d参数仅适用于coreutils(Linux)的日期.
在BSD/OS X中,使用
date -u -r $i +%T
Run Code Online (Sandbox Code Playgroud)