Como converter uma sequência de datas no fuso horário atual na linha de comando?

11

Como posso converter uma string de data / hora, por exemplo 2011-11-13 08:11:02 +0000, para meu fuso horário local na linha de comando?

Daniel Beck
fonte
Não hesite em adicionar respostas diferentes, mas lembre-se de que o OS X tem BSD date, não GNU date. As opções são bem diferentes.
Daniel Beck

Respostas:

17

Use date -jf "<input format>" "<input value>" +"<output format>".

O seguinte converte uma data UTC no meu fuso horário local (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

Se você especificar o mesmo formato de data para entrada e saída, apenas converterá a hora no fuso horário local. Mas, como no exemplo, você pode combinar isso com uma conversão de formato.

Daniel Beck
fonte
2
O fuso horário alvo pode ser alterado configurando temporariamente $TZ: TZ=EST date -jf %H%z 23+0100 +%I%p05PM
Lri 13/11