यह सैंडबॉक्स में डाउगाट के सवालों में से एक से प्रेरित है, जहां मैंने सुझाव दिया था कि वह 31 अप्रैल को उन लोगों के लिए Pi दिन के रूप में शामिल करता है जो दिन / महीने प्रारूप का उपयोग करते हैं, केवल उनके लिए मुझे सूचित करना है कि 31 अप्रैल नहीं है!
महीने / दिन प्रारूप में एक तारीख स्ट्रिंग को देखते हुए, जो अमान्य हो सकता है, रोलओवर का उपयोग करके सही तिथि को आउटपुट करता है। (पहले रोलओवर महीने, उसके बाद दिन रोलओवर)।
उदाहरण:
"15/43" - यह 15 वें महीने के 43 वें दिन के रूप में पढ़ता है। पहले, हम महीने से अगले वर्ष तक रोल करते हैं, इसलिए हम 3 (मार्च) तक समाप्त हो जाते हैं। अब, चूंकि मार्च में केवल 31 दिन होते हैं, इसलिए हम अप्रैल के अतिरिक्त दिनों को रोलओवर करते हैं, इसलिए हम वास्तविक तारीख को "4/12" (12 अप्रैल) के रूप में आउटपुट करते हैं ।
"3/16" - यह एक वैध तारीख (16 मार्च) है। जैसा है वैसा लौटा दो।
"12/64" - आह, 64 दिसंबर से बहुत सारी शौकीन यादें ... दिसंबर में 31 दिन हैं, जनवरी में 31 दिन हैं, इसलिए मेरा वास्तव में मतलब है "2/2" (2 फरवरी)।
"19/99" - सबसे पहले, 19 एक 7 (जुलाई) बन जाता है। जुलाई में 31 दिन हैं, अगस्त में 31 दिन हैं, सितंबर में 30 दिन हैं, इसलिए आउटपुट "10/7" (7 अक्टूबर) है।
"1/99999" - एक वर्ष में 365 दिन होते हैं। 99999 (mod 365) = 354. वर्ष का 354 दिन "12/20" है ।
"9999999/10" - जाहिर तौर पर, 9999999 (मॉड 12) = 3, इसलिए यह "3/10" (10 मार्च) है।
मानदंड:
इनपुट महीना एक पूर्णांक है। 0. इनपुट दिवस एक पूर्णांक है। 0. वर्ष को कभी भी निर्दिष्ट करने की आवश्यकता नहीं है, क्योंकि इससे निपटने के लिए कोई लीप वर्ष नहीं हैं।
अपडेट करें:
जैसा कि मुझे लगता है कि यह चुनौती को सरल करेगा, कैलेंडर फ़ंक्शन, जैसे कि जावा कैलेंडर क्लास में प्रतिबंधित हैं। दिनांक पार्सिंग / प्रारूपण कार्य अभी भी हालांकि अनुमत हैं।
1/99999
उपज चाहिए 12/19
।