Как преобразовать строку даты в текущий часовой пояс в командной строке?

11

Как я могу преобразовать строку даты / времени, например 2011-11-13 08:11:02 +0000, в свой местный часовой пояс в командной строке?

Даниэль Бек
источник
Не стесняйтесь добавлять разные ответы, но помните, что в OS X есть BSD date, а не GNU date. Варианты совсем разные.
Даниэль Бек

Ответы:

17

Использование date -jf "<input format>" "<input value>" +"<output format>".

Следующее преобразовывает дату UTC в мой местный часовой пояс (CET):

$ date -jf "%Y-%m-%d %H:%M:%S %z" "2011-11-13 08:11:02 +0000" +"%Y_%m_%d__%H_%M_%S"
2011_11_13__09_11_02

Если вы укажете один и тот же формат даты для ввода и вывода, вы будете конвертировать только время в местный часовой пояс. Но, как в примере, вы можете объединить это с преобразованием формата.

Даниэль Бек
источник
2
Целевой часовой пояс можно изменить, временно установив $TZ: TZ=EST date -jf %H%z 23+0100 +%I%p05PM
Lri