在bash脚本中添加日期

问题描述 投票:0回答:1

我想加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

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

我在网上搜索了如何使用日期命令,并浏览了类似的帖子 -

我从上面和我经历的其他人中的大多数都有相同的格式添加到我尝试使用的日期,但它没有为我工作。

所以我想帮助理解如何添加小时/分钟/天或任何其他时间单位以及我做错了什么。

bash time date-arithmetic arithmetic-expressions
1个回答
1
投票

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

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

日期将这部分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
# .........^^
© www.soinside.com 2019 - 2024. All rights reserved.