java - 如何通过日历获得正确的一年中的周数?

标签 java calendar

伙计们,我对调用以下方法感到困惑: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/

相关文章:

ios - NSCalendar dateFromComponents 返回错误日期 2

iphone - 存取iPhone的日历事件

java - 去除插入排序中的重复项

java - 根据单词中的位置替换字符串中的字母

java - 为什么 thenCallRealMethod() 在这里丢失参数?

java - 使用日历在每个午夜重置计算的步数

android - 是否有日历提醒警报的 Intent ?

javascript - 在 Sharepoint 日历中将一系列日期变灰

java - 将输入数据动态添加到 Hadoop Map-Reduce 作业?

java - Spring @Transactional 在每个服务方法结束时提交