/ / एंड्रॉइड में कैलेंडर में एक दिन जोड़ना 31 वें - जावा, एंड्रॉइड, कैलेंडर पर विफल रहता है

एंड्रॉइड में कैलेंडर में एक दिन जोड़ना 31 - जावा, एंड्रॉइड, कैलेंडर पर विफल रहता है

मान लें कि वर्तमान में तारीख 28 मई है। यदि मैं निम्न कमांड को आदेश देता हूं तो आउटपुट बन जाता है

cal.add(Calendar.DATE, 1); // Day = 29
cal.add(Calendar.DATE, 1); // Day = 30
cal.add(Calendar.DATE, 1); // Day = 31
cal.add(Calendar.DATE, 1); // Day = 31
cal.add(Calendar.DATE, -1); // Day = 29

यह अगले महीने क्यों नहीं कूद रहा है। और यह 31 वें स्थान पर क्यों अटक गया। (लेकिन वास्तव में जब आप एक घटाते हैं तो यह 29 तक कूद जाता है।

उत्तर:

उत्तर № 1 के लिए 13

जब आप कैलेंडर में 1 जोड़ते हैं।DATE फ़ील्ड, इसे महीने के साथ-साथ महीने के अंत तक पहुंचाना भी चाहिए (31 मई के मामले में) ताकि आपने लिखा हो "टी मेक सेंस।" इसे डीबग करें और सुनिश्चित करें कि दिन का मूल्य वास्तव में आप क्या सोचते हैं


जवाब के लिए 23 № 2

आप इसे दो सरल तरीकों से आसानी से कर सकते हैं मेरे दोस्त। पहले एक है:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 1);

और दूसरा है:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.HOUR_OF_DAY, 24);

मुझे लगता है कि आप इस चीज को खोजना चाहेंगे। धन्यवाद।


जवाब के लिए 3 № 3

मुझे गलत लगता है! एपीआई को रिकॉर्डिंग, रोल केवल स्पेजिअल फील्ड को अपडेट करता है!

यदि आप किसी कैलेंडर में दिनों को जोड़ते हैं तो प्रयास करें

cal.roll(Calendar.DATE, 1);

यह ओवरफ्लो होने पर महीने और साल बढ़ेगा


उत्तर के लिए 1 № 4

आप कैलेंडर के किस कार्यान्वयन का उपयोग कर रहे हैं? क्योंकि यह हर किसी के लिए काम करने लगता है ...


जवाब के लिए 0 № 5

मैंने जाँच की, यह सफलतापूर्वक जोड़ता है। मेरा कोड और o / p देखें:

Calendar  cal = Calendar.getInstance(); // today is 09-Aug-2012

for(int i=0;i<23;i++) {
cal.add(Calendar.DATE, 1);
}
System.out.println(cal.get(Calendar.DAY_OF_MONTH));

ओ / पी

1


जवाब के लिए 0 № 6

यह एक जवाब नहीं है, बस एक सुराग है: मैंने पाया कि यह तब होता है जब तारीखों के बीच डीएसटी शुरू होता है। शायद यह आपका मामला है ...

उदाहरण के लिए: ब्रेज़िलियन डीएसटी ने इस वर्ष "सन अक्टूबर 20 00:00:00 2013" शुरू किया

Calendar cal = Calendar.getInstance(); // today = Sat Oct 19 00:00:00 BRT 2013
cal.add(Calendar.DATE, 1); // = Sat Oct 19 23:00:00 BRT 2013

दुर्भाग्य से, मैं अभी भी नहीं जानता कि कैसे वर्कअराउंड किया जाए।


उत्तर के लिए 0 № 7

यह चाल भी चलनी चाहिए।

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, 1);

आप इसके साथ काम कर सकते हैं:

for (int i = 0; i < 365; i++) {
cal.add(Calendar.DAY_OF_YEAR, 1);
System.out.println(cal.getTime().toString());
}