Могу ли я получить смещение UTC из командной строки Unix? - PullRequest
16 голосов
/ 02 мая 2011

Я пишу скрипт autoconf, которому нужно текущее смещение UTC.Нет очевидного способа вычеркнуть это из программы свиданий.Есть ли какой-нибудь простой способ получить это из утилиты командной строки, или я должен написать тест, который получает информацию и каким-то образом ее захватывает?

Ответы [ 3 ]

20 голосов
/ 02 мая 2011

Попробуйте и посмотрите, работает ли он у вас:

date +%z
7 голосов
/ 09 августа 2014

Для других, выполняющих 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 делают, но Mac, BusyBox, QNX не делают) ,

И я часто возвращаюсь к https://en.wikipedia.org/wiki/ISO_8601 для справки.

4 голосов
/ 02 мая 2011

Да, date может сделать это:

[tomalak@lolphin:~] date -R
Mon, 02 May 2011 17:37:45 +0100

Или, более конкретно:

[tomalak@lolphin:~] date -R | awk '{print $6}'
+0100
[tomalak@lolphin:~] date +%z
+0100

Чтение date --help очень полезно.

...