मुझे SimpleDateFormat के साथ कुछ परेशान परिणाम मिल रहे हैं और मुझे उम्मीद है कि कोई इस मुद्दे पर कुछ प्रकाश डाल सकता है। उत्पादन:SimpleDateFormat सप्ताह की गणना
Time = Mon Dec 27 00:00:00 PST 2010
2010-01 <--- THIS IS WHAT I DON'T UNDERSTAND
Start of week = Sun Dec 26 00:00:00 PST 2010
2010-01
End of Week = Sat Jan 01 23:59:59 PST 2011
2011-01
मैं पिछले साल है कि एक विशेष मामले के रूप अगले साल के लिए प्रदान की "सप्ताह" इलाज हो सकता है? या यह व्याख्या करने का यह सही तरीका है? जाहिर है जब अनुक्रमिक रूप से सप्ताह व्यवस्थित करने का प्रयास करते समय, आदेश गलत है। शुरुआती मूल्यों को समायोजित करना, 25 दिसंबर, 2005 को 53 वें सप्ताह माना जाता है। मैंने जोडा को अभी तक देखने के लिए नहीं देखा है कि क्या जोडा इसी तरह के परिणाम उत्पन्न करता है।
प्रासंगिक कोड:
private static Date getStartOfWeek(Date d) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(d);
calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
return calendar.getTime();
}
private static Date getEndOfWeek(Date d) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.setTime(d);
calendar.add(Calendar.WEEK_OF_YEAR, 1);
calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek());
calendar.add(Calendar.MILLISECOND, -1);
return calendar.getTime();
}
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(2010, Calendar.DECEMBER, 27);
Date d = calendar.getTime();
Date start = getStartOfWeek(d);
Date end = getEndOfWeek(d);
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-ww");
System.out.println("Time = " + d);
System.out.println(fmt.format(d));
System.out.println("Start of week = " + start);
System.out.println(fmt.format(start));
System.out.println("End of Week = " + end);
System.out.println(fmt.format(end));
पृष्ठभूमि: जब JasperReports में crosstab (सप्ताह में बांटा तारीख) का उपयोग मैं इस पाया।
संपादित करें: मैं उपयोग कर रहा हूँ JDK 1.6.0_25
संपादित करें: ऐसा लगता है कि मैं Joda उपयोग करने के लिए सही परिणाम प्राप्त करने के लिए होगा। सप्ताह की शुरुआत/अंत प्राप्त करने के लिए, मैं इसका उपयोग कर समाप्त हुआ: LocalDate.withDayOfWeek
। वर्ष और सप्ताह संख्या को पुनः प्राप्त करने के लिए, मैंने DateTime.getWeekyear
और DateTime.getWeekOfWeekyear
का उपयोग किया।
+1 दिनांक प्रस्तुतियों में एक सूक्ष्म मुद्दा लाने के लिए। नीचे मेरा जवाब देखें। –