伙计们,我对调用以下方法感到困惑:Calendar.getInstance().get(Calendar.WEEK_OF_YEAR)
,从该方法得到的结果不正确。这是我的代码:
Locale.setDefault(Locale.CHINA);
Calendar calendar = Calendar.getInstance();
//we think Monday is the first day of a week in China,but not Sunday.
calendar.setFirstDayOfWeek(Calendar.MONDAY);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateString = "2010-01-01";
calendar.setTime(sdf.parse(dateString));
System.out.println("DateString: " + dateString + ", week: " + calendar.get(Calendar.WEEK_OF_YEAR));
dateString = "2010-12-27";
calendar.setTime(sdf.parse(dateString));
System.out.println("DateString: " + dateString + ", week: " + calendar.get(Calendar.WEEK_OF_YEAR));
结果是
DateString: 2010-01-01, week: 1//This may be wrong?
DateString: 2010-12-27, week: 1//This result is definitely wrong.
所以问题是,如何使用 Calendar 实例获取正确的一年中的周数?
最佳答案
区域设置仅影响格式(即将日期解析并格式化为中文)。您需要将时区设置为中国。修复 Calendar#getInstance()
行,如下所示:
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CST")); // China Standard Time
关于java - 如何通过日历获得正确的一年中的周数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4543857/