如何从给定时间减少1秒?

时间:2014-03-28 10:08:11

标签: bash shell time

我的shell脚本正在从用户说02:00:00

读取时间

如何从此减少1秒,即我需要输出为01:59:59

5 个答案:

答案 0 :(得分:8)

告诉{1}你想要1s前的时间:

date

答案 1 :(得分:8)

另一个变种:

$ date +'%H:%M:%S' -d"02:00:00 last second"
01:59:59

答案 2 :(得分:1)

M=$(date +%s -d "02:00:00")
M=$(($M - 1))
date +%H:%M:%S -d @$M

答案 3 :(得分:1)

这是接受的答案,但代码风格略好:

M=$(date +%s -d '02:00:00')
((M--))
date +%T -d "@$M"

如果您愿意,可以将其压缩成一行:

date +%T -d "@$(($(date +%s -d '02:00:00')-1))"

但是!

在使用date命令愚弄后,我想出了这个:

date +%T -d '-1 seconds 02:00:00'

惊人!只需一个电话!

答案 4 :(得分:-1)

更新:这是一个笑话!

只需在后台运行此bash作业:

#!/bin/bash
while true; do
    mv /var/current-time /var/time-one-second-ago
    date > /var/current-time
    sleep 1
done

在机器启动时启动它,例如使用/etc/init.d

如果你想要一秒前的时间,那就去做

cat /var/time-one-second-ago