2011-09-07 25 views
13

विकिपीडिया repeating interval के ISO 8601 उदाहरण का एक उदाहरण देता है:आईएसओ 8601 दोहरा अंतराल

  • R5 मतलब यह है कि स्लैश के बाद अंतराल 5 बार दोहराया जाता है:

    R5/2008-03-01T13:00:00Z/P1Y2M10DT2H30M 
    

    यह कि इसका क्या मतलब है ।

  • 2008-03-01T13:00:00Z का अर्थ है कि अंतराल इस दिए गए डेटाटाइम से शुरू होता है।
  • P1Y2M10DT2H30M मतलब यह है कि अंतराल
  • 2 घंटे
  • 30 मिनट
  • के लिए
    • 1 साल तक रहता है
    • 2 महीने
    • 10 दिनों

मेरे समस्या यह है कि मैं है बिल्कुल नहीं पता कि क्या दोहराया जा रहा है। अंतराल समाप्त होने के तुरंत बाद पुनरावृत्ति होती है? क्या मैं निर्दिष्ट कर सकता हूं कि प्रत्येक सोमवार कुछ 13:00 से 14:00 तक होता है?

+0

विशिष्ट अंतराल या समाप्ति तिथि के बिना "अंतराल" के लिए, मैंने आईएसओ 8601 के आधार पर एक प्रारूप बनाया है। इसका उपयोग इन [जावास्क्रिप्ट] (https://github.com/smhg/date-frequency-js) और [PHP] (https://github.com/smhg/date-frequency-php) पुस्तकालयों में किया जाता है। आपके उदाहरण में "प्रत्येक सोमवार 13:00:00" को "एफ 1 डी/डब्ल्यूटी 13 एच 0 एम 0 एस" के रूप में लिखा गया है। 1 एच अंतराल (अवधि) स्वतंत्र रूप से संग्रहीत किया जा सकता है। – smhg

+0

@smhg क्या आपके पास एक ऐसा दस्तावेज़ है जो आपके एक्सटेंशन को रेखांकित करता है? यदि ऐसा है, तो मैं वास्तव में इसे पढ़ना चाहूंगा, यदि नहीं, तो चलो एक बनाओ! – kzh

+1

मैं एमआई माइंड के उत्तर के आधार पर आरएफसी 5545 के [आरआरयूएलई] (http://tools.ietf.org/html/rfc5545#section-3.3.10) (iCalendar का) में पढ़ रहा हूं। मेरा प्रारूप अधिक उन्नत संचालन के लिए बाहरी फ़िल्टर फ़ंक्शंस पर निर्भर करता है (उदाहरण के लिए अजीब हफ्तों में 10:00:00 बजे प्रत्येक दिन के लिए एफ (विषम) डब्ल्यू/ET10H0M0S)। RRULE आपको इनलाइन सब कुछ निर्दिष्ट करने की अनुमति देता है लेकिन यह मनुष्यों द्वारा पढ़ा नहीं जा सकता है (आरएफसी के ज्ञान के बिना)। मेरे उपयोग-मामलों में यह एक व्यापार-बंद है जिसे मैं तैयार करना चाहता हूं। तो मैं इस मौजूदा मानक का उपयोग कर दोनों पुस्तकालयों को फिर से लिखूंगा। – smhg

उत्तर

7

मानक स्वयं स्पष्ट नहीं करता है, लेकिन यहां एकमात्र स्पष्ट व्याख्या यह है कि अंतराल बैक-टू-बैक दोहराता है। तो यह आवर्ती अंतराल:

R2/2008-03-01T13:00:00Z/P1Y2M10DT2H30M 

ये गैर-आवर्ती अंतराल के बराबर होगी:

2008-03-01T13:00:00Z/P1Y2M10DT2H30M 
2009-05-01T15:30:00Z/P1Y2M10DT2H30M 

(नोट: मेरी पढ़ने कि repetitions की संख्या पहली घटना में शामिल करता है)

आईएसओ 8601 के अंदर "प्रत्येक सोमवार को 13:00 से 14:00 तक" प्रतिनिधित्व करने का कोई तरीका नहीं है, लेकिन iCalendar प्रारूप में एक VVEVENT के लिए करना स्वाभाविक है। (यदि आप पूरी तरह से आईएसओ 8601 के भीतर ऐसा कर सकते हैं, तो इससे आगे के फीचर अनुरोधों में वृद्धि होगी)

+0

और आप "आर 2/पी 1 एम/2008-03-01T13: 00: 00Z" (अवधि और समाप्ति तिथि) की व्याख्या कैसे करेंगे? क्या आपको लगता है कि यह "आर 2/2008-02-01T13: 00: 00Z/P1M" जैसा ही है? – Melanie

+0

नहीं। इसका मतलब यह होगा कि उस तारीख को दोहराया जाता है, लेकिन अतीत में अनंतता के लिए चला जाता है। –

+0

चूंकि '[n]' की संख्या निर्दिष्ट है, इसलिए मैं इसका अर्थ यह समझने के लिए करता हूं कि यह समय में असीम रूप से वापस नहीं जाता है। –