त्रुटि संदेश "दिनांक: अमान्य दिनांक '2016-10-16'"


35

आज मेरी घड़ी स्वचालित रूप से गर्मियों के समय में समायोजित हो गई थी, और एक क्रॉस्टैब की एक स्क्रिप्ट विफल होने लगी। मैं देख रहा था कि क्या हो रहा है, और निम्न त्रुटि प्रदर्शित की जा रही है LC_ALL=C:

दिनांक: अमान्य दिनांक '2016-10-16'

हालांकि मैं सिर्फ सिस्टम को रिबूट करना सबसे अच्छा होगा, लेकिन अब मैंने रिबूट किया है, और त्रुटि अभी भी दिखाई देती है:

$ 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

ऐसा किसके कारण हो सकता है?


आप किस OS से इस कमांड को चला रहे हैं? डेबियन पर पुन: पेश नहीं किया जा सकता है। दो अलग-अलग localeएस के साथ की कोशिश की : sv_SE.utf8और en_us.utf-8
maulinglawns 8

2
दिन के किस समय (रात) में ब्राजील गर्मी के समय के लिए घड़ियों को आगे करता है?
Techraf

हालांकि मैं सभी देशों में जहां देर से शिफ्ट करता हूं, जैसे सुबह 2, जहां यह मुद्दों के कारण कम होता है।
njzk2

जवाबों:


57

समस्या यह है कि दिन के समय की बचत का समय बदल गया है और आपके समय क्षेत्र में 16 अक्टूबर 2016 को 1 घंटे का समय दिया गया है:

$ 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

तो उस समय के बीच के किसी भी समय 00:00को 00:59आपके टाइमज़ोन में अमान्य माना जाता है (लेकिन शायद दूसरों में मान्य):

$ 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

आप अतिरिक्त समय निर्धारित कर सकते हैं, जो उस सीमा में नहीं है:

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

उपरोक्त GNU तिथि व्यवहार है।

बीएसडी तिथि में यह समस्या नहीं है। यदि समय-सीमा में इनपुट तिथि अमान्य है, तो इसे चुपचाप 1 घंटे के लिए समायोजित किया जाएगा, जब तक कि यह वैध समय तक न पहुंच जाए:

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

1 घंटा और 53 सेकंड ?!
domen

इसलिए इसने भविष्य में 53 सेकंड तक का समय समायोजित किया? या मैंने कुछ गलत समझा?
domen

1
आह, समझ में आता है; गैर-निर्दिष्ट डेटा को संरक्षित करता है (क्लियरिंग के विपरीत)। अभी भी थोड़ा अजीब है क्योंकि 00:59:07 तक आगे बढ़ना इस मामले में पर्याप्त होगा।
domen

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.