Hata mesajı “tarih: geçersiz tarih '2016-10-16'”


35

Bugün saatim otomatik olarak yaz saatine ayarlandı ve bir crontab komut dosyası başarısız olmaya başladı. Neler olduğuna bir baktım ve aşağıdaki hata görüntüleniyordu LC_ALL=C:

tarih: geçersiz tarih '2016-10-16'

Sadece sistemi yeniden başlatmak en iyisi olacak olsa da, şimdi yeniden başlattım ve hata hala görünüyor:

$ date -d '2016-10-15'
Sat Oct 15 00:00:00 BRT 2016
$ date -d '2016-10-16'
date: data inválida “2016-10-16”
$ date -d '2016-10-17'
Mon Oct 17 00:00:00 BRST 2016

Buna ne sebep olabilir?


Bu komutu hangi işletim sisteminden çalıştırıyorsunuz? Debian 8'de çoğaltılamıyor. İki farklı locales ile denendi : sv_SE.utf8ve en_us.utf-8.
maulinglawns

2
Brezilya günün hangi saatinde (gece) saatleri yaz saatlerine kadar ilerletiyor?
techraf

Ben geç saatlerde kayma olan tüm ülkelerin, sabahları 2 gibi, sorunlara neden olma ihtimalinin daha düşük olduğunu düşünüyorum.
njzk2

Yanıtlar:


57

Sorun, gün ışığından yararlanma saatinin 16 Ekim 2016 tarihinde saat diliminizde 1 saat değiştiği ve iletildiği zaman:

$ zdump -v America/Sao_Paulo | awk '/Oct 16/ && /2016/'
America/Sao_Paulo  Sun Oct 16 02:59:59 2016 UTC = Sat Oct 15 23:59:59 2016 BRT isdst=0
America/Sao_Paulo  Sun Oct 16 03:00:00 2016 UTC = Sun Oct 16 01:00:00 2016 BRST isdst=1

Arasında herhangi bir zaman Yani 00:00için 00:59o gün (ama diğerlerinde belki geçerlidir) kendi saat diliminizdeki geçersiz sayılır:

$ TZ=America/Sao_Paulo gdate -d '2016-10-16 0:59'
gdate: invalid date ‘2016-10-16 0:59’

$ TZ=Asia/Ho_Chi_Minh gdate -d '2016-10-16 0:59'
Sun Oct 16 00:59:00 ICT 2016

Bu aralıkta olmayan ek bir zaman ayarlayabilirsiniz:

$ TZ=America/Sao_Paulo gdate -d '2016-10-16 1:00'
Sun Oct 16 01:00:00 BRST 2016

Yukarıdaki GNU tarih davranışıdır.

BSD tarihinin bu sorunu yok. Girilen tarih saat diliminde geçersizse, geçerli bir saate ulaşana kadar sessizce 1 saat ileriye ayarlanır:

$ TZ=America/Sao_Paulo date -j -f '%Y%m%d%H%M' 201610160000
Sun Oct 16 01:00:53 BRST 2016

1 saat 53 saniye mi?
domen

Demek zamanı geleceğe 53 saniye daha ayarladı? Yoksa bir şeyi yanlış mı anladım?
domen

1
Aah, mantıklı; Belirtilmemiş verileri korur (temizliğin aksine). Yine de 00:59:07 'ye kadar ilerlemek biraz garip, bu durumda yeterli olacaktır.
domen

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.