ISO 8601 और RFC 3339 दिनांक प्रारूप के बीच क्या अंतर है?


280

आईएसओ 8601 और आरएफसी 3339 दो प्रारूप हैं जो सामान्य वेब हैं। क्या मुझे एक के ऊपर एक प्रयोग करना चाहिए? क्या कोई सिर्फ एक विस्तार है? क्या मुझे वास्तव में उस बुरे की देखभाल करने की आवश्यकता है?


42
मैंने ietf.org/rfc/rfc3339.txt से RFC के लिंक को टूल . ietf.org/html/rfc3339 पर HTML संस्करण में बदल दिया है । RFC से लिंक करते समय आपको हमेशा HTML संस्करण पर tools.ietf.org/html से लिंक करना चाहिए । न केवल वे अनुभाग लिंक के लिए धन्यवाद नेविगेट करना आसान है, बल्कि, महत्वपूर्ण बात यह है कि वे आपके द्वारा पढ़े जाने वाले RFC को अपडेट या पालन करने वाले किसी भी RFC में शीर्ष पर हैं। लोग अनजाने में RFC को हर समय स्टैक ओवरफ्लो पर उद्धृत करते हैं, और मैं इस सलाह को दोहराता रहूंगा जब तक कि समस्या दूर न हो जाए। (संदेह से बचने के लिए, यह RFC अप्रचलित नहीं है।)
मार्क अमेरी

जवाबों:


238

क्या कोई सिर्फ एक विस्तार है?

बहुत अधिक, हाँ - RFC 3339 को ISO 8601 के प्रोफाइल के रूप में सूचीबद्ध किया गया है। विशेष रूप से RFC 3339 तारीख और समय का पूर्ण प्रतिनिधित्व निर्दिष्ट करता है (केवल भिन्नात्मक सेकंड वैकल्पिक हैं)। RFC में कुछ छोटे, सूक्ष्म अंतर भी हैं। उदाहरण के लिए, केवल दो अंकों वाले वर्षों के नुकीले प्रतिनिधित्व की अनुमति नहीं है - RFC 3339 को 4-अंकीय वर्षों की आवश्यकता होती है, और RFC केवल एक अवधि वर्ण को भिन्नात्मक सेकंड के लिए दशमलव बिंदु के रूप में उपयोग करने की अनुमति देता है। RFC "T" को एक स्थान (या अन्य वर्ण) से बदलने की अनुमति देता है, जबकि मानक केवल इसे छोड़ने की अनुमति देता है (और केवल तब जब प्रतिनिधित्व का उपयोग करने वाले सभी दलों के बीच समझौता होता है)।

मैं दोनों के बीच मतभेदों के बारे में बहुत अधिक चिंता नहीं करूंगा, लेकिन ऑफ-मौका पर आपके उपयोग का मामला उनके पास चलता है, यह आपकी नज़र में लायक होगा:


11
यह दूसरा तरीका है, ISO 'T' को छोड़ने की अनुमति देता है, लेकिन RFC 3339 इसे टूल
Java Guy

21
क्षमा करें जावा गाय, लेकिन यह काफी सही नहीं है। आपके द्वारा संदर्भित परिशिष्ट केवल सूचनात्मक है और प्रतिबंध व्याकरण को सरल रखने के लिए है। खंड 5.6 के अंत में दिए गए नोट में स्पष्ट रूप से लिखा गया है कि पठनीयता के लिए एक स्थान का उपयोग किया जा सकता है, जो पठनीयता के पहले उल्लेख का उल्लेख करता है जो कि खंड 5.2 का विषय है। उद्धरण के लिए: "इस वाक्यविन्यास का उपयोग करने वाले अनुप्रयोग पठनीयता के लिए चुन सकते हैं, एक पूर्ण-तिथि और पूर्ण-काल को निर्दिष्ट करने के लिए (कह सकते हैं) एक अंतरिक्ष वर्ण।"
ग्रेग ए। वुड्स

8
@JavaGuy आपके द्वारा जोड़ा गया परिशिष्ट RFC 3339 वाक्य रचना के बारे में भी बात नहीं कर रहा है - इसका शीर्षक ISO 8601 है जिसे ABNF एकत्र किया गया है और यह ABNF का उपयोग करके ISO 8601 के व्याकरण का औपचारिक रूप से वर्णन करने का एक प्रयास है । यह कुछ भी नहीं कहता है कि RFC 3339 डेटाटाइम सिंटैक्स के बारे में सबूत के रूप में लिया जाना चाहिए।
मार्क अमेरी


9
मैं लेखक हूं कि जस्टिन (पिछली टिप्पणी) ने संपर्क किया (हालांकि वहां भारी भार उठाने के लिए जिम्मेदार नहीं है)। मैं उनकी टिप्पणी की पुष्टि करता हूं। आम तौर पर, मैं RFC3339 जैसे विनिर्देश दस्तावेजों का सुझाव देता हूं जो आवश्यकता के बजाय निर्दिष्ट करते हैं - यह उपयोग का संदर्भ है जो यह निर्धारित करता है कि क्या आवश्यक है । जब तक यह स्पष्ट है कि क्या इरादा है, तब तक एक विशिष्ट वाक्यविन्यास उत्पादन ठीक है। (यह वास्तव में RFC3339 ISO8601 के लिए चयनात्मक संदर्भ बनाने में क्या करता है के लिए अलग नहीं है।) खंड 5.6 में नोट भी देखें ।
ग्राहम क्लीं

20

RFC 3339 ज्यादातर ISO 8601 का प्रोफाइल है, लेकिन वास्तव में RFC 2822 से "-00: 00" टाइमज़ोन विनिर्देशन उधार लेने में इसके साथ असंगत है। यह विकिपीडिया लेख में वर्णित है।


4

आपको इतना ध्यान नहीं रखना चाहिए। RFC 3339, स्वयं के अनुसार, ISO 8601 से प्राप्त मानकों का एक सेट है। हालांकि, कुछ मिनटों का अंतर है, और वे सभी RFC 3339 में उल्लिखित हैं। मैं यहाँ उन सभी के माध्यम से जा सकता हूं, लेकिन आप शायद बेहतर करेंगे। जिस स्थिति में आप चिंतित हैं, उसके लिए बस अपने आप दस्तावेज़ को पढ़ना:

http://tools.ietf.org/html/rfc3339

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