gpt4 book ai didi

java - 两个日期的 WEEK_OF_YEAR 相同

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:34 29 4
gpt4 key购买 nike

当我执行下面的代码时,我得到相同的输出。

public static void main(String[] args) throws ParseException {    
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date procDate = sdf.parse("2016-01-01");
Calendar cal = Calendar.getInstance(Locale.UK);
cal.setFirstDayOfWeek(Calendar.SUNDAY);
cal.setTime(procDate);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR) );
System.out.println(cal.get(Calendar.YEAR) );

procDate = sdf.parse("2016-12-27");
cal.setTime(procDate);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR) );
System.out.println(cal.get(Calendar.YEAR) );
}

实际输出:

52
2016
52
2016

预期输出:

52
2015
52
2016

或者

0
2016
52
2016

LocalesetFirstDayOfWeek难道我就不能改变吗?

最佳答案

日历类不知道您的调用

cal.get(Calendar.WEEK_OF_YEAR); 
cal.get(Calendar.YEAR);

应该是在一起的关系。由于处于 X 年的最后一周可能意味着您已经处于 X+1 年,因此您所看到的输出实际上是正确的。

要实现您想要的结果,您应该使用另一个 DateFormater 来打印一年中的第几周以及相应的年份:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("w Y");
Date procDate = sdf.parse("2016-01-01");
System.out.println(sdf2.format(procDate));

procDate = sdf.parse("2016-12-27");
System.out.println(sdf2.format(procDate));

结果:

53 2015
52 2016

关于java - 两个日期的 WEEK_OF_YEAR 相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40403040/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com