简体   繁体   中英

Addition to a Date in bash script

I wanted to add 1 hour to a date time. So I tried this -

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

And I got this as output -

2019-02-22 05:21:22

There was no addition to hours. So I played a bit more with date -

    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

The output for each command is so confusing. I am unable to figure out how to add hours or any other time to date.

I searched online of how to use date command and went through posts like -

Most of them from above and others that I wnent thorugh have the same format to add to dates as I tried to use but it didn't work out for me.

So I would like some help in understanding how to add hours/minutes/days or any other unit of time to date and what is it that I am doing wrong.

parsing date time arithmetic is hard. Given:

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

date takes this part 05:21:22 + 1 hour to mean 05:21:22+0100 hour which it then interprets as 05:21:22+0100 +1 hour . Ref: https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html

You can help resolve the ambiguity by putting the relative time in a different spot:

# ............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
# .........^^

Or, specify a timezone yourself

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM