如何使用“ date -d'xx / xx / xxxx-xx'”从给定日期(也是过去)中计算过去的日期

时间:2019-03-26 23:14:30

标签: bash shell date

我有一个输入日期:

  

01-01-2019 08:30:00

我想通过以下方式及时将其备份:

  

2小时10分钟

因此,新日期应为:

  

01-01-2019 06:20


我尝试了以下命令:

(1)date -d "2019-01-01 08:30:00 + 1hour" 返回值:Tue Jan 1 09:30:00 STD 2019(好的,但似乎很幸运)

(2)date -d "2019-01-01 08:30:00 - 1hour" 返回:Tue Jan 1 11:30:00 STD 2019表示+3小时(错误)

(3)date -d "2019-01-01 08:30:00 + 3hours" 返回:Tue Jan 1 07:30:00 STD 2019表示-1小时(错误)

(4)date -d "2019-01-01 08:30:00 + 2minutes" 返回:Tue Jan 1 07:31:00 STD 2019表示-59分钟(错误)

2 个答案:

答案 0 :(得分:1)

您可能需要明确提及您的时区:

$ TZ=STD date -d '2019-01-01 08:30:00 STD + 1 hour'
Tue Jan  1 09:30:00 STD 2019
$ TZ=STD date -d '2019-01-01 08:30:00 STD - 3 hour'
Tue Jan  1 05:30:00 STD 2019
$ TZ=STD date -d '2019-01-01 08:30:00 STD + 2 minutes'
Tue Jan  1 08:32:00 STD 2019

这似乎减轻了date的困惑。

答案 1 :(得分:0)

这是最可靠的方法:

Slider

首先将其转换为自纪元以来的秒数。

然后减去您想要的时间。

然后使用date -d "@$(( $(date -d '2019-01-01 08:30:00' +%s) - ( 2 * 60 + 10 ) * 60 ))" 格式化输出。

相关问题