erro de data inválido para o formato% m% d% Y

1

Eu quero converter uma string no formato% m% d% Y até a data.

Mas, com um erro de data inválido, conforme mostrado abaixo:

bash-4.1$ date -d '10042015' +"%m%d%Y"
date: invalid date '10042015'

Como consertar isso?

    
por Vikas Sharma 15.10.2015 / 12:58

1 resposta

3

A opção date + define apenas o formato saída , não a entrada. Você precisará usar uma ferramenta diferente ou formatar a string primeiro:

date --date="$(sed 's/^\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9][0-9][0-9]\)$/--/' <<< '10042015')"

ou

date --date="$(sed 's/\(..\)\(..\)\(....\)/--/' <<< '10042015')"

ou simplesmente

date --date="$(sed 's/\(.*\)\(....\)$//' <<< '10042015')"

(obrigado @Costas ). Mesmo que os dois últimos sejam mais curtos, ainda sugiro o primeiro, porque:

  1. é mais rigoroso, evitando bugs estranhos ao lidar com strings de ferramentas ou usuários de terceiros e, mais importante,
  2. é mais fácil de manter, pois é mais óbvio o que o código está fazendo (reorganizando três números e colocando hífens entre eles, em vez de mover os quatro últimos caracteres para o início da sequência).
por 15.10.2015 / 13:52