Усі інші запитання в мережі SE стосуються сценаріїв, коли дата або вважається рівною now
( Q ), або де вказана лише дата ( Q ).
Я хочу зробити дату та час, а потім відняти час.
Ось що я спробував спочатку:
date -d "2018-12-10 00:00:00 - 5 hours - 20 minutes - 5 seconds"
Це призводить до 2018-12-10 06:39:55
- Це додало 7 годин. Потім відняли 20:05 хвилин.
Прочитавши man
та info
сторінку date
, я подумав, що це виправлено:
date -d "2018-12-10T00:00:00 - 5 hours - 20 minutes - 5 seconds"
Але, той же результат. Звідки це взагалі 7 годин?
Я спробував і інші побачення, тому що я подумав, що, можливо, у цей день у нас було 7200 високосних секунд, хто знає, хаха. Але ті ж результати.
Ще кілька прикладів:
$ date -d "2018-12-16T00:00:00 - 24 hours" +%Y-%m-%d_%H:%M:%S
2018-12-17_02:00:00
$ date -d "2019-01-19T05:00:00 - 2 hours - 5 minutes" +%Y-%m-%d_%H:%M:%S
2019-01-19_08:55:00
Але тут стає цікаво. Якщо я пропущу час на введення, він працює добре:
$ date -d "2018-12-16 - 24 hours" +%Y-%m-%d_%H:%M:%S
2018-12-15_00:00:00
$ date -d "2019-01-19 - 2 hours - 5 minutes" +%Y-%m-%d_%H:%M:%S
2019-01-18_21:55:00
$ date --version
date (GNU coreutils) 8.30
Що я пропускаю?
Оновлення: я додав в Z
кінці, і це змінило поведінку:
$ date -d "2019-01-19T05:00:00Z - 2 hours" +%Y-%m-%d_%H:%M:%S
2019-01-19_04:00:00
Я все ще розгублений. На інформаційній сторінці GNU про дату не так багато .
Я здогадуюсь, що це проблема часового поясу, але цитую The Wiki Wiki за ISO 8601 :
Якщо інформація про відношення UTC не подана з поданням часу, час вважається місцевим часом.
Якого я хочу. Мій місцевий час також встановлено правильно. Я не впевнений, чому в цьому простому випадку дата не змішається з часовим поясом, коли я вказую дату і хочу щось відняти. Чи не слід спочатку віднімати години з рядка дати? Навіть якщо він перетворює його спочатку на дату, а потім віднімає, якщо я не віднімаю будь-які віднімання, я отримую саме те, що хочу:
$ date -d "2019-01-19T05:00:00" +%Y-%m-%d_%H:%M:%S
2019-01-19_05:00:00
Тож якщо це справді питання часового поясу, звідки це безумство?