A data de análise com o conteúdo de uma execução de data anterior emite um erro

4

Estou enfrentando alguns problemas com o comando date. A execução a seguir emite um erro:

danilo@desktop:~$ x=$(date -d "+60 seconds"); dt=$(date -d "$x")
date: invalid date ‘Mo 11. Sep 09:07:05 CEST 2017’

Isso é estranho, porque funciona em outros computadores que testei. Até isso:

danilo@desktop:~$ x=$(date); dt=$(date -d "$x")
date: invalid date ‘Mo 11. Sep 09:06:43 CEST 2017’

Produz um erro.

Qual é o motivo desse erro? São as configurações de fuso horário? Como posso fazer isso funcionar?

    
por Danilo M. Oliveira 11.09.2017 / 09:07

1 resposta

8

O formato padrão da sua localidade não é suportado como entrada até a data. A solução é usar algum formato padrão. Por exemplo:

x=$(date -d "+60 seconds" +%s); dt=$(date -d "@$x")

+%s diz a date para retornar um formato Unix padrão: segundos desde a época.

O sinal @ em date -d "@$x" indica date para interpretar $x como segundos desde a época.

    
por 11.09.2017 / 09:17