Por que minha data não pode lidar com fusos horários? [duplicado]

0

Estou tendo alguns problemas estranhos com o GNU coreutils date v8.4 (CentOS) que não estão ocorrendo na v8.21 (Ubuntu / Mint).

Na v8.4, recebo a seguinte saída (estou no PST):

$ date --version | head -n 1
date (GNU coreutils) 8.4
$ date -d '2014-11-08'
Sat Nov  8 00:00:00 PST 2014
$ date -d '2014-11-08T00:00:00'
Fri Nov  7 09:00:00 PST 2014

Estou assumindo que ele está tentando corrigir o fuso horário para o UTC, mesmo que eu não tenha solicitado isso e esse comportamento não ocorra na minha máquina Linux Mint local.

Ok, então adicionarei um especificador de fuso horário, conforme especificado por W3 . Na minha máquina:

$ date --version | head -n 1
date (GNU coreutils) 8.21
$ date -d '2014-11-08T00:00:00-0800'
Sat Nov  8 00:00:00 PST 2014
$ date -d '2014-11-08T00:00:00-08:00'
Sat Nov  8 00:00:00 PST 2014

Ótimo. Mas no CentOS:

$ date --version | head -n 1
date (GNU coreutils) 8.4
$ date -d '2014-11-08T00:00:00-0800'
date: invalid date '2014-11-08T00:00:00-0800'
$ date -d '2014-11-08T00:00:00-08:00'
date: invalid date '2014-11-08T00:00:00-08:00'

EDIT : Outro que não funciona, usando a saída do próprio date :

$ date -d "$(date -Ihours)"
date: invalid date '2014-11-08T13-0800'

O seguinte funciona :

$ date -d '2014-11-08 00:00:00 -08:00'
Sat Nov  8 00:00:00 PST 2014

mas, devido a requisitos completamente não relacionados, não posso ter espaços na minha cadeia de datas.

Estou bastante perplexo. Procurei por alterações recentes em date mas não viu nada que pareça promissor.

Minha pergunta: Como posso obter date para não alterar meus fusos horários (de preferência) ou aceitar entrada de fuso horário de uma string legível sem espaços?

    
por wchargin 08.11.2014 / 22:20

1 resposta

2

Verifique novamente o link que você postou , há uma mensagem de commit:

date: support parsing of ISO-8601-with-"T" dates

Ele foi implementado no coreutils 8.13 (veja changelog ).

    
por 08.11.2014 / 23:06