दिनांक कमांड 31 दिसंबर के लिए गलत सप्ताह संख्या देता है


21

जब मैं 31 दिसंबर के लिए सप्ताह की संख्या प्राप्त करने की कोशिश करता हूं, तो यह 1. वापस आती है। जब मुझे सप्ताह की संख्या 30 दिसंबर के लिए मिलती है, तो मुझे 52 मिलता है --- जो कि मैं उम्मीद करता हूं। सोमवार का दिन सही है। यह उबंटू चलाने वाले RPI पर है।

$ date -d "2018-12-30T1:58:55" +"%V%a"

52Sun

$ date -d "2018-12-31T1:58:55" +"%V%a"

01Mon

समय स्ट्रिंग के बिना एक ही मुद्दा

$ date -d "2018-12-31" +"%V%a"

01Mon

9
"तिथि आदेश 31 दिसंबर के लिए गलत सप्ताह की संख्या देता है" - "गलत" किस विनिर्देश के अनुसार? क्या आप जिस विनिर्देशन का उपयोग कर रहे dateहैं उसके लिए मैनुअल वही उपयोग कर रहा है?
जोर्ग डब्ल्यू मित्तग


2
आप में रुचि हो सकती है कि मंयकलैंडर कंट्रोल रोमानिया में गलत सप्ताह संख्या क्यों दिखाता है? ब्लॉग पोस्ट विंडोज के बारे में है, लेकिन जिस मुद्दे पर चर्चा की जा रही है, वह सामान्य है (और लगता है कि आपका सामना वही कर रहा है)।
एक CVn

1
"कंप्यूटर गलत होना चाहिए, क्योंकि मैंने स्पष्ट रूप से गलती नहीं की!" मुझे याद दिलाता है जब मैंने शिकायत की थी कि फोरट्रान IV संकलक के पास एक बग होना चाहिए , क्योंकि मेरे पहले सरल कार्यक्रम में कोई त्रुटि नहीं हो सकती ...
RonJohn

जवाबों:


49

यह आपको आईएसओ सप्ताह दे रहा है जो सोमवार से शुरू होता है।

आईएसओ सप्ताह की तारीख प्रणाली प्रभावी रूप से एक लीप सप्ताह कैलेंडर प्रणाली है, जो कि 1988 से अंतिम रूप से अंतर्राष्ट्रीय संगठन (आईएसओ) के लिए अंतर्राष्ट्रीय संगठन द्वारा जारी आईएसओ 8601 तारीख और समय मानक का हिस्सा है (आखिरी बार 2004 में संशोधित किया गया था) और, इससे पहले, इसे परिभाषित किया गया था। आईएसओ (आर) 2015 1971 के बाद से। इसका उपयोग (मुख्य रूप से) सरकार और व्यापार में वित्तीय वर्षों के लिए किया जाता है, साथ ही साथ समयपालन में भी। इसे पहले "औद्योगिक तिथि कोडिंग" के रूप में जाना जाता था। यह प्रणाली एक सप्ताह के वर्ष को निर्दिष्ट करती है, जो वर्ष के सामान्य सप्ताह के अंकन को परिभाषित करके ग्रेगोरियन कैलेंडर को प्रस्तुत करता है।


एक आईएसओ सप्ताह-नंबरिंग वर्ष (जिसे आईएसओ वर्ष अनौपचारिक रूप से भी कहा जाता है) में 52 या 53 पूर्ण सप्ताह होते हैं। यानी सामान्य 365 या 366 दिनों के बजाय 364 या 371 दिन। अतिरिक्त सप्ताह को कभी-कभी एक लीप सप्ताह के रूप में संदर्भित किया जाता है, हालांकि आईएसओ 8601 इस शब्द का उपयोग नहीं करता है।

सप्ताह सोमवार से शुरू होता है। प्रत्येक सप्ताह का वर्ष ग्रेगोरियन वर्ष है जिसमें गुरुवार पड़ता है। वर्ष का पहला सप्ताह, इसलिए, हमेशा 4 जनवरी होता है। आईएसओ सप्ताह वर्ष की संख्या इसलिए 1 जनवरी के करीब कुछ दिनों के लिए ग्रेगोरियन से थोड़ा विचलित हो जाती है।


यदि आप सप्ताह 52 के रूप में 12/31 दिखाना चाहते हैं, तो आपको उपयोग करना चाहिए %U, जो आईएसओ मानक का उपयोग नहीं करता है:

$ date -d "2018-12-31T1:58:55" +"%V%a"
01Mon
$ date -d "2018-12-31T1:58:55" +"%U%a"
52Mon

धन्यवाद। वही है जिसकी मैं तलाश कर रहा था। मैंने कैल कमांड के साथ बहुत अधिक जटिल विधि का उपयोग किया।
जॉर्ज शाफर

3

सप्ताह की संख्या की परिभाषा यूरोप और यूएसए के बीच भिन्न है, संभवतः आईएसओ बनाम एएनएसआई मानक। यह रविवार - शनिवार या सोमवार - रविवार होने के एक सप्ताह से संबंधित हो सकता है, और यह फिर से प्रभु दिवस (यहूदी बनाम रविवार) की यहूदी बनाम ईसाई परिभाषा से संबंधित हो सकता है।

यूरोप के लिए, सप्ताह नंबर 1 में जनवरी में पहला गुरुवार होता है, और इस प्रकार इसमें न्यूनतम 4 दिन होते हैं (अर्थात बहुसंख्यक) नए साल (थू-शुक्र-सत-सूर्य) से संबंधित होते हैं।

वैसे भी, ऐसे वर्षों में जब सभी (!!) सप्ताह की संख्या +/- यूरोप और संयुक्त राज्य अमेरिका के बीच अलग-अलग हैं, यह बहु-राष्ट्रीय कंपनियों में शेड्यूल स्थापित करने के साथ बहुत मज़ा देता है। :-)

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