添加到 bash 脚本中的日期

Addition to a Date in bash script

我想将约会时间加 1 小时。所以我尝试了这个 -

date -u -d "2019-02-22 05:21:22 + 1 hour" +"%F %T"

我把这个作为输出 -

2019-02-22 05:21:22

小时数没有增加。所以我玩了一些约会 -

    date -u -d "2019-02-22 05:21:22 + 12 hours" +"%F %T"
    > 2019-02-21 18:21:22

    date -u -d "2019-02-22 05:21:22 - 12 hours" +"%F %T"
    > 2019-02-22 18:21:22

    date -u -d "2019-02-22 05:21:22 + 1 minutes" +"%F %T"
    > 2019-02-22 04:22:22

    date -u -d "2019-02-22 05:21:22 + 1 day" +"%F %T"
    > 2019-02-23 04:21:22

每个命令的输出非常混乱。我无法弄清楚如何添加时间或任何其他时间。

我在网上搜索了如何使用 date 命令并浏览了像 -

这样的帖子

上面的大多数和我想通的其他人都具有相同的格式来添加到我尝试使用的日期中,但它对我不起作用。

所以我想了解如何添加 hours/minutes/days 或任何其他时间单位到日期以及我做错了什么。

解析日期时间算术很难。鉴于:

date -u -d "2019-02-22 05:21:22 + 1 hour" +"%F %T"

date 将这部分 05:21:22 + 1 hour 表示为 05:21:22+0100 hour 然后 将其解释为 05:21:22+0100 +1 hour。参考:https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html

您可以通过将相对时间放在不同的位置来帮助解决歧义:

# ............vvvvvvvv
$ date -u -d "+ 1 hour 2019-02-22 05:21:22" +"%F %T"
2019-02-22 06:21:22
# .........^^
# .......................vvvvvvvv
$ date -u -d "2019-02-22 + 1 hour 05:21:22" +"%F %T"
2019-02-22 06:21:22
# .........^^
# ................................vvvvvvvv
$ date -u -d "2019-02-22 05:21:22 + 1 hour" +"%F %T"
2019-02-22 05:21:22
# .........^^

或者,您自己指定一个时区

# ...............................v
$ date -u -d "2019-02-22 05:21:22Z + 1 hour" +"%F %T"
2019-02-22 06:21:22
# .........^^