2010-05-31 18 views
5

हैलो मुझे ग्रेगोरियन कैलेंडर के साथ समस्या है।जावा ग्रेगोरियन कैलेंडर मैं क्या गलत कर रहा हूँ? गलत तिथि?

वहां क्या गलत है?

2010/6/1 और 2010/05/31 का नतीजा कैसा है?

package test; 

import java.util.Calendar; 
import java.util.GregorianCalendar; 

public class Main { 

    public static void main(String[] args) { 
     Calendar cal = new GregorianCalendar(2010, 5, 31); 
     System.out.println(cal.get(Calendar.YEAR) + "/" + cal.get(Calendar.MONTH) + "/" + cal.get(Calendar.DAY_OF_MONTH)); 
    } 

} 

उत्तर

9

जावा 0 से महीनों की गणना करता है, इसलिए 5 जून है। स्थिरांक का उपयोग करना हमेशा सुरक्षित होता है। तो मैं लिखूंगा:

Calendar cal = new GregorianCalendar(2010, Calendar.MAY, 31); 

वही आपके कैलेंडर प्रिंट आउट पर लागू होता है। यदि आप cal.get(Calendar.MONTH) करते हैं तो आपको 6 अर्थ जुली मिलती है।

1

ऐसा इसलिए है क्योंकि महीने का नंबर शून्य-आधारित है, इसलिए आप 31 जून को सेट करने की कोशिश कर रहे हैं, लेकिन जून केवल 30 दिन है, इसलिए इसे 1 जुलाई में परिवर्तित कर दिया जाता है।

1

ऊपर दिए गए उत्तरों के लिए टोडड, क्योंकि जून में कोई 31 दिन नहीं है, कैलेंडर अगले वैध दिन को बढ़ावा देता है क्योंकि Calendar.setLenient डिफ़ॉल्ट रूप से सत्य है।

संबंधित मुद्दे