小编典典

将以秒为单位的时间跨度转换为Shell中的格式化时间

linux

我有一个$ i变量,它在shell脚本中是秒,并且我试图将其转换为24小时HH:MM:SS。这在壳中可能吗?


阅读 498

收藏
2020-06-07

共1个答案

小编典典

这是一种有趣的hacky方式,可以完全满足您的需求=)

date -u -d @${i} +"%T"

说明:

  • date实用程序允许您从字符串开始以秒为单位指定从1970-01-01 00:00:00 UTC开始的时间,并以您指定的任何格式输出时间。
  • -u选项是显示UTC时间,因此不考虑时区偏移量(因为从1970年开始的时间是UTC)
  • 以下部分是date特定于GNU的(Linux):
    • -d部分告诉date接受来自字符串的时间信息,而不是使用now
    • @${i}部分是你如何告诉date$i是在几秒钟内
  • +"%T"是格式化你的输出。在man date页面中:%T time; same as %H:%M:%S。因为我们只关心HH:MM:SS零件,所以很合适!
2020-06-07