Дополнение к дате в bash-скрипте - PullRequest
0 голосов
/ 23 февраля 2019

Я хотел добавить 1 час к дате.Итак, я попробовал это -

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

И я получил это как вывод -

2019-02-22 05: 21: 22 * ​​1007 *

Тамне было дополнением к часам.Так что я играл немного больше с датой -

    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

Вывод для каждой команды очень запутанный.Я не могу понять, как добавить часы или любое другое время к дате.

Я искал в Интернете, как использовать команду даты, и просматривал сообщения типа -

Большинство из них сверху и другие, которые я хочу использовать, имеют тот же формат для добавления к датам, что я пытался использовать, но у меня это не сработало.

Поэтому мне нужна помощь в понимании того, как добавить часы / минуты / дни или любую другую единицу времени к дате и что я делаю неправильно.

1 Ответ

0 голосов
/ 23 февраля 2019

разбор даты и времени арифметика сложна.Дано:

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