Я пишу autoconf script, которому требуется текущее смещение UTC. Нет очевидного способа получить это из программы с датой. Есть ли простой способ получить это из командной строки, или я должен написать тест, который получает информацию и каким-то образом ее захватывает?
Могу ли я получить смещение UTC из командной строки Unix?
Ответ 1
Попробуйте это и посмотрите, работает ли оно для вас:
date +%z
Ответ 2
Для других, выполняющих ISO8601, вы можете выбрать какой-либо вариант:
date +%Y%m%dT%H%M%S%z # 20140809T092143-0700
date -u +%Y%m%dT%H%M%S%z # 20140809T162143+0000
date -u +%Y%m%dT%H%M%SZ # 20140809T162143Z
Мне нравятся те, потому что отсутствие пунктуации поддерживает универсальное использование. Обратите внимание, что капитал Z "жестко запрограммирован" для UTC - использование% Z будет устанавливать UTC или другую именованную часовую зону. Если вы предпочитаете знаки препинания:
date +%Y-%m-%dT%H:%M:%S%z # 2014-08-09T09:21:43-0700
date +%Y-%m-%dT%H:%M:%S%:z # 2014-08-09T09:21:43-07:00 - NOT ALL SYSTEMS
date -u +%Y-%m-%dT%H:%M:%S%z # 2014-08-09T16:21:43+0000
date -u +%Y-%m-%dT%H:%M:%S%:z # 2014-08-09T16:21:43+00:00 - NOT ALL SYSTEMS
date -u +%Y-%m-%dT%H:%M:%SZ # 2014-08-09T16:21:43Z
Обратитесь к man strftime
, поскольку поддерживаемые форматы различаются. Например, некоторые системы поддерживают вставку двоеточий в смещение с использованием%: z,%:: z или%: z - только две из моих пяти систем (Debian, Ubuntu do, но Mac, BusyBox, QNX нет),
И я часто возвращаюсь к https://en.wikipedia.org/wiki/ISO_8601 для справки.
Ответ 3
Да, date
может сделать это:
[[email protected]:~] date -R
Mon, 02 May 2011 17:37:45 +0100
Или, точнее:
[[email protected]:~] date -R | awk '{print $6}'
+0100
[[email protected]:~] date +%z
+0100
Чтение date --help
очень полезно.