4

У меня есть строка даты / времени, которая извлекается из имени файла. Я знаю, что отметка времени была написана с использованием часового пояса A, и мне нужно преобразовать ее в часовой пояс B для дальнейшей обработки. Это возможно в bash?

например:

filenameTimestamp="2015-01-20 18:05:02"
timezoneA="Australia/Sydney"
timezoneB="Australia/Brisbane"

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

1 ответ1

7

Чтобы интерпретировать дату в Сиднее к дате в Лос-Анджелесе, США:

$ sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")
$ TZ="America/Los_Angeles" date -d "@$sec"
Wed May 20 01:05:02 PDT 2015

Вот результат для Брисбена:

$ TZ="Australia/Brisbane" date -d "@$sec"
Wed May 20 18:05:02 AEST 2015

Как это устроено

  • TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02"

    Это временно устанавливает часовой пояс в Сидней и преобразует дату «2015-05-20 18:05:02» в время в секундах с начала эпохи (UTC).

  • sec=$(TZ="Australia/Sydney" date +'%s' -d "2015-05-20 18:05:02")

    Это экономит время в секундах с начала эпохи (UTC) в переменной оболочки sec .

  • TZ="America/Los_Angeles" date -d "@$sec"

    Это временно устанавливает часовой пояс в Лос-Анджелес и интерпретирует дату, данную sec .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .