POSIX.1-2001 मानक के अनुसार, अगले महीने (जैसा कि tm_mon
बढ़ाना है) कॉल करने से पहले mktime
) मूल्यों को तब तक समायोजित करके किया जाता है जब तक वे फिट नहीं हो जाते। इसलिए, उदाहरण के लिए, 31 जनवरी 2001 से अगला महीना 3 मार्च 2001 है। ऐसा इसलिए है क्योंकि tm_mday
31 में से tm_mon
के साथ मान्य नहीं है 1 (फरवरी) का, इसलिए इसे tm_mon
. के लिए सामान्यीकृत किया जाता है 2 का (मार्च) और tm_mday
3.
31 जनवरी 2000 से अगला महीना 2 मार्च 2000 है, क्योंकि फरवरी में उस वर्ष 29 दिन होते हैं। जनवरी से अगले महीने, 1 2038 मौजूद नहीं है, निर्भर करता है।
मानकों के बारे में सबसे अच्छी बात यह है कि चुनने के लिए बहुत सारे हैं . SQL मानक की जाँच करें, मुझे यकीन है कि आप अगले महीने का एक अलग अर्थ पा सकते हैं। मुझे संदेह है कि आईएसओ 8601 आपको एक और विकल्प दे सकता है। मुद्दा यह है कि, कई अलग-अलग व्यवहार हैं, 'अगले महीने' का अर्थ बहुत ही डोमेन-विशिष्ट है।
संपादित करें:मैं सोचता हूं मैंने पाया है कि SQL-92 इसे कैसे संभालता है, जाहिरा तौर पर 31 जनवरी से अगले महीने के लिए पूछना एक त्रुटि है।
कड़ियाँ:
- SQL-92:http://www.contrib .andrew.cmu.edu/~shadow/sql/sql1992.txt
- POSIX:http://pubs.opengroup.org/onlinepubs/9699919799/ (हालांकि जाहिरा तौर पर वह संस्करण अब आईएसओ सी को स्थगित कर देता है, जो उतना स्पष्ट नहीं लगता है। मेरी मशीन पर एमकेटाइम मैनपेज स्पष्ट है, हालांकि)
- आईएसओ सी:http://www .open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
- जावा:http://download। oracle.com/javase/6/docs/api/java/util/Calendar.html