तीन गैर नकारात्मक पूर्णांक को देखते हुए y, mऔर d(जिनमें से कम से कम एक सकारात्मक होना चाहिए) और एक सकारात्मक साल के साथ एक मान्य दिनांक (किसी भी उचित प्रारूप में उस वर्ष, महीना, और दिन भी शामिल है में है, और कोई अतिरिक्त जानकारी), उत्पादन तारीख है कि yवर्ष, mमहीने, और dमूल तारीख के बाद दिन।
ग्रेगोरियन कैलेंडर का उपयोग सभी तिथियों (यहां तक कि ग्रेगोरियन कैलेंडर को अपनाने से पहले की तारीखों) के लिए भी किया जाना है।
अगली तारीख की गणना करने की विधि इस प्रकार है:
yवर्ष में जोड़ेंmमहीने में जोड़ें- रोलओवर लागू करके तारीख को सामान्य करें (जैसे
2018-13-01->2019-01-01) - यदि दिन महीने के अंतिम दिन है, तो इसे महीने के अंतिम दिन में बदल दें (जैसे
2018-02-30->2018-02-28) dदिन में जोड़ें- रोलओवर लागू करके तारीख को सामान्य करें (जैसे
2019-01-32->2019-02-01)
लीप वर्ष (4 से विभाज्य वर्ष, लेकिन 100 से विभाज्य नहीं जब तक कि 400 से विभाज्य नहीं हो) को उचित रूप से संभाला जाना चाहिए। सभी इनपुट और आउटपुट आपकी भाषा के प्रतिनिधित्व योग्य पूर्णांक सीमा के भीतर होंगे।
परीक्षण के मामलों
प्रारूप में टेस्ट केस दिए गए हैं input => output, जहां inputJSON ऑब्जेक्ट है।
{"date":"2018-01-01","add":{"d":1}} => 2018-01-02
{"date":"2018-01-01","add":{"M":1}} => 2018-02-01
{"date":"2018-01-01","add":{"Y":1}} => 2019-01-01
{"date":"2018-01-30","add":{"M":1}} => 2018-02-28
{"date":"2018-01-30","add":{"M":2}} => 2018-03-30
{"date":"2000-02-29","add":{"Y":1}} => 2001-02-28
{"date":"2000-02-29","add":{"Y":4}} => 2004-02-29
{"date":"2000-01-30","add":{"d":2}} => 2000-02-01
{"date":"2018-01-01","add":{"Y":2,"M":3,"d":4}} => 2020-04-05
{"date":"2018-01-01","add":{"Y":5,"M":15,"d":40}} => 2024-05-11
आप परीक्षण के लिए इस JSFiddle का उपयोग कर सकते हैं ।
ये है कोड गोल्फ, इसलिए सबसे छोटा समाधान (प्रत्येक भाषा में) जीतता है।
y, mऔर d(उदाहरण के dलिए 2147483000 हो सकता है?)
All inputs and outputs will be within the representable integer range of your language.