将时间单位添加到没有时区的日期

时间:2018-08-21 12:35:13

标签: bash date datetime timezone

我用Linux bash编写这些

date -d "2018-08-21 02:00:00" +'%y-%m-%d %T'

它会打印

2018-08-21 02:00:00

但是当我写这些

date -d "2018-08-21 02:00:00 +1 hour" +'%y-%m-%d %T'

它打印

2018-08-21 07:30:00而不是2018-08-21 03:00:00

它将我的时区添加到日期。添加时间单位时如何忽略时区?

1 个答案:

答案 0 :(得分:4)

正在发生的事情是,+1被解释为时区UTC+1h。因此,它将把输入日期从UTC + 1转换为您的本地时区,然后由于语句hour而仍然为其增加了一个小时。

要解决此问题,您必须摆脱+符号。这里有一些可能性:

date -d "2018-08-21 02:00:00 next hour" "+%F %T"
date -d "2018-08-21 02:00:00 hour" "+%F %T"

或使用浮点数:

date -d "2018-08-21 02:00:00 + 1.0 hour" "+%F %T"

有关为什么会出现这种情况的更多信息,请查看: How to add an interval to a date/time stored in a variable