2016-01-05 8 views
8

निम्न कोड किसी विशिष्ट तारीख के कार्य-कार्य की गणना करता है।जावा कैलेंडर में वर्ष के सप्ताह में एक बग?

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Calendar cal = new GregorianCalendar(); 
cal.setTime(df.parse("2015-12-27 08:00:00")); 
System.err.printf("%d.%02d\n", cal.getWeekYear(), cal.get(Calendar.WEEK_OF_YEAR)); 

वर्तमान में यह 2016.01 प्रिंट करता है।

जैसा कि मैं कार्य सप्ताह संख्या विनिर्देश को समझता हूं, 2016.01 पहला सप्ताह है जिसमें 2016 में 4 दिन हैं, लेकिन इस तरह के सप्ताह से 27 दिसंबर का कोई तरीका नहीं है।

वहाँ जो किसी भी वर्ष मानते हुए सप्ताह सोमवार से शुरू करने के लिए काम करेंगे जावा 7 में यह करने के लिए कोई तरीका है?

+5

सप्ताह के नियम दुनिया भर में अलग हैं, आप किस लोकेल में हैं? – nos

+3

और क्या 'cal.getFirstDayOfWeek()' आप के लिए वापस आ रहा है, साथ 'cal.getMinimalDaysInFirstWeek()' साथ? –

+0

@ जोन्स स्केट, इसे 1 पर सेट किया गया था, मुझे इसे 4 पर सेट करना चाहिए था। – Evgeny

उत्तर

6

सोमवार सप्ताह के पहले दिन के रूप में सेट करके देखें।

cal.setFirstDayOfWeek(Calendar.MONDAY); 
+0

इसके अलावा cal.setMinimalDaysInFirstWeek (4); – Evgeny

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