Ответ 1
Я считаю, что +%s
- секунды с начала эпохи. Это часовой пояс инвариант.
Похоже, мне не удается получить вторую дату UTC bash. Я в Сиднее, так что + 10 часов UTC время
date
Thu Jul 3 17:28:19 WST 2014
date -u
Thu Jul 3 07:28:20 UTC 2014
Но когда я попытался преобразовать его, я получаю тот же результат, который не является временем UTC
date +%s
1404372514
date -u +%s
1404372515
Что мне здесь не хватает?
После получения ответа, в котором говорилось, что date +%s
возвращает время UTC, вот подробности о проблеме, с которой я сейчас сталкиваюсь.
Я пытаюсь сравнить дату, написанную в файле с помощью python. Эта дата записывается в секундах в UTC. И bash date +%s
не дает мне то же самое. На самом деле, если я делаю в python time.asctime(time.localtime(date_in_seconds_from_bash))
, я получаю текущее время Сиднея, а не UTC. Я не понимаю.
Я считаю, что +%s
- секунды с начала эпохи. Это часовой пояс инвариант.
Готов поспорить, вот что было задумано.
$ date -u [email protected]404372514
Thu Jul 3 07:28:34 UTC 2014
Вы говорите, что используете:
time.asctime(time.localtime(date_in_seconds_from_bash))
где date_in_seconds_from_bash
- предположительно выход date +%s
.
Функция time.localtime
, как следует из названия, дает вам местное время.
Если вы хотите UTC, используйте time.gmtime()
, а не time.localtime()
.
Как Ответ JamesNoonan33 говорит, что результат date +%s
является инвариантом часового пояса, поэтому date +%s
в точности эквивалентен date -u %s
. Он печатает количество секунд с "эпохи", которое составляет 1970-01-01 00:00:00 UTC
. Результат, который вы показываете в своем вопросе, полностью согласуется с этим:
date -u
Thu Jul 3 07:28:20 UTC 2014
date +%s
1404372514 # 14 seconds after "date -u" command
date -u +%s
1404372515 # 15 seconds after "date -u" command
Можно рассмотреть возможность добавления этой строки в ~/.bash_profile
(или аналогичный), чтобы можно было быстро получить текущий UTC как в текущем времени, так и в секундах с начала эпохи.
alias utc='date -u && date -u +%s'