首页 > 解决方案 > 在 Linux 中将小时添加到日期和时间

问题描述

我正在尝试使用“日期”命令在 Linux(Ubuntu 18.04.03)中为日期和时间添加 5 小时。如果我指定日期与不指定日期,我会得到不同的结果。

示例 1:我想将 5 小时添加到特定日期:

  [12:45:25 ~]$ date -d "2019-12-08 12:16:45 +5 hours"

  Sun Dec  8 03:16:45 EST 2019

但结果是在指定日期和时间之前 9 小时。我期待的日期是 12 月 8 日,时间是 17:16:45。

示例 2:我将 5 小时添加到系统日期:

  [12:45:37 ~]$ date -d "+5 hours"

  Sun Dec  8 17:46:02 EST 2019

这个结果是正确的,正如我所料。

我想在 bash 脚本中使用它,并且无法确定我做错了什么,我得到了这些不同的结果。

任何帮助将不胜感激。

标签: linuxdate

解决方案


将 EST 添加到日期和时间字符串将给出正确答案。

我发现像这样获取时区和偏移量是值得的:

dateInfo=$(date +"%Z %z")
dateTZ=${dateInfo:0:3}
dateOffset="+"${dateInfo:5:2}

然后在转换代码中使用它们:

DATE=$(date -d "$CDATE1 $dateTZ $dateOffset hours" +%Y%m%d)

(其中 CDATE1 是从文件的创建日期解析为日期和时间)


推荐阅读