Bash:从给定时间减去10分钟

Rog*_*ore 9 bash time

在bash脚本中,如果我有一个表示时间的数字,以hhmmss(或hmmss)的形式,减去10分钟的最佳方法是什么?

即90000 - > 85000

wds*_*wds 22

这有点棘手.日期可以做一般操作,即你可以这样做:

date --date '-10 min'
Run Code Online (Sandbox Code Playgroud)

指定小时 - 分 - 秒(使用UTC,否则它似乎假设PM):

date --date '11:45:30 UTC -10 min'
Run Code Online (Sandbox Code Playgroud)

要分割日期字符串,我能想到的唯一方法是子字符串扩展:

a=114530
date --date "${a:0:2}:${a:2:2}:${a:4:2} UTC -10 min"
Run Code Online (Sandbox Code Playgroud)

如果你想回到hhmmss:

date +%H%M%S --date "${a:0:2}:${a:2:2}:${a:4:2} UTC -10 min"
Run Code Online (Sandbox Code Playgroud)


kSi*_*SiR 5

为什么不直接使用纪元时间然后减去 600 呢?

$ echo "`date +%s` - 600"| bc; date 
1284050588
Thu Sep  9 11:53:08 CDT 2010
$ date -d '1970-01-01 UTC 1284050588 seconds' +"%Y-%m-%d %T %z"
2010-09-09 11:43:08 -0500
Run Code Online (Sandbox Code Playgroud)