ध्यान रखें कि अवधियों, जिनमें शामिल है दिन, महीने, और/या सेकंड की तरह एक अवधि में साल परिवर्तित सही ढंग से जानने के बिना नहीं किया जा सकता एक वास्तविक प्रारंभिक तिथि/समय।
उदाहरण
1 SEP 2010: +P1M2D means +2764800 seconds
1 OCT 2010: +P1M2D means +2851200 seconds
क्योंकि सितंबर 30 दिन होते हैं, और अक्टूबर 31-दिन है है कि के लिए
। लीप-साल और लीप-सेकंड की वजह से, वर्ष अंतराल को परिवर्तित करने के साथ एक ही समस्या होती है। लीप-साल महीनों के रूपांतरण के लिए और जटिलता भी पेश करते हैं - क्योंकि फरवरी से लीप-साल में एक दिन लंबा है, अन्यथा यह अन्यथा है। दिन उन क्षेत्रों में समस्याग्रस्त हैं जहां डेलाइट सेविंग टाइम का अभ्यास किया जाता है - डीएसटी संक्रमण के दौरान होने वाली एक दिवसीय अवधि वास्तव में 1 घंटे लंबी होती है, अन्यथा यह अन्यथा होगी।
यह सब कहा जा रहा है - आप निश्चित रूप से युक्त घंटे, मिनट और सेकंड्स को केवल सेकेंड वाले मानों में संपीड़ित मूल्यों को संकुचित कर सकते हैं। मैं सुझाव दूंगा कि आप नौकरी करने के लिए एक सरल पार्सर बनाएं (या शायद नियमित अभिव्यक्ति पर विचार करें)।
बस उपरोक्त उल्लिखित संकटों से अवगत रहें - वहां ड्रेगन होंगे। यदि आप दिन, महीनों और/या वर्षों से निपटने का इरादा रखते हैं, तो आपको ज्ञात दिनांक/समय के संदर्भ में गणित करने के लिए अंतर्निहित तंत्रों में से एक का उपयोग करने की आवश्यकता है। जैसा कि अन्य ने उल्लेख किया है: दिनांक अंतराल वर्ग, संयोजन में सूखे, डेटटाइम कक्षा पर प्रदान किए गए कार्यों शायद इस से निपटने का सबसे सहज तरीका है। लेकिन यह केवल PHP संस्करण 5.3.0 या उससे अधिक में उपलब्ध है।
आप v5.3.0 से भी कम समय के साथ काम करना है, तो आप इस छोटे से मणि के आसपास कुछ बनाने की कोशिश कर सकते हैं:
$startDateTime = '19700101UTC';
$duration = strtotime($startDateTime.'+1Year1Day1Second') - strtotime($startDateTime);
print("Duration in Seconds: $duration");
strtotime
सीधे आईएसओ 8601 प्रारूप के साथ काम नहीं करेगा (जैसे P1Y1DT1S
।) , लेकिन प्रारूप यह है कि समझता है (1Year1Day1Second
) बहुत दूर नहीं है - यह एक बहुत सीधी-आगे रूपांतरण होगा। (थोड़ा "हैकी" ... लेकिन यह आपके लिए PHP है)।
शुभकामनाएं!
एक बहुत देर से सावधानी ... सेकंड के लिए P1MT परिवर्तित करने के लिए असंभव है जब तक आप जानते हैं कि आप 28 के साथ, एक महीने परिवर्तित कर रहे हैं हो सकता है 29, 30, या 31 दिन उस मामले के लिए, आप पी 1 वाईटी को चार साल में गलत होने के बिना 365 दिनों में भी परिवर्तित नहीं कर सकते हैं। (एक कारण है कि मानक में दिन या सेकंड में अंतराल निर्दिष्ट नहीं होते हैं।) – Bevan
@ बेवन: ली द्वारा उत्तर इस के साथ विवरण में जाता है। टीएल; डीआर: आपको एक शुरुआती तारीख चाहिए। – berkes
आह - धन्यवाद @berkes, पृष्ठ को स्किम करते समय मुझे याद आया (मुझे कुछ असंबंधित होने के दौरान यह मिला)। – Bevan