Eu quero obter as informações de data com este comando:
date --date=2019-03-22
ou
date --date=2019/03/22
mas apresenta este erro:
date: invalid date ‘2019-03-22’
ou
date: invalid date ‘2019/03/22’
como você pode ver, não está relacionado ao traço. a mesma coisa acontece com barra.
Quando eu uso outra data como
date --date=2019-03-21
Ele mostra as informações corretamente.
Não deve estar relacionado ao caractere de traço ruim. porque acabei de excluir o último 2
e substituí-lo por 1
e a saída está OK.
O que está acontecendo de errado?
Resultado de alguns comandos para mais informações:
$ date --version
date (GNU coreutils) 8.28
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by David MacKenzie.
$ type -a date
date is /bin/date
$ uname -m
x86_64
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
$ which date
/bin/date
$ apt-cache policy coreutils
coreutils:
Installed: 8.28-1ubuntu1
Candidate: 8.28-1ubuntu1
Version table:
*** 8.28-1ubuntu1 500
500 http://us.archive.ubuntu.com/ubuntu bionic/main amd64 Packages
100 /var/lib/dpkg/status
$ date
Fri Mar 22 06:54:59 PDT 2019
date --date=2019-03-22 2>&1 | od -c
0000000 d a t e : i n v a l i d d a
0000020 t e 342 200 230 2 0 1 9 - 0 3 - 2 2
0000040 342 200 231 \n
0000044
Algo estranho acontecendo com fuso horário diferente nesta data: 2019-03-22
. Eu mudei aleatoriamente o fuso horário para diferentes áreas. Alguns deles têm erros, outros não! Quando seleciono estes, tenho problemas com essa data específica:
- Los Angeles (EUA)
- Xangai, China)
- Madri, Espanha)
Tenho quase certeza de que isso se deve à mudança para o horário de verão no fuso horário determinado: efetivamente, isso significa que uma hora "desaparece" (e, portanto, torna-se "
invalid
").No meu próprio fuso horário, o horário de verão começou às 2h do domingo, 10 de março, portanto, essa hora é inválida:
Considerando que os tempos imediatamente antes e depois são válidos:
Nos fusos horários em que a mudança ocorre à meia-noite, a data vazia parece inválida porque o GNU
date
assume a meia-noite:mas uma hora depois é válido:
Veja também Data Inválida Linux
e