作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用这种方法来获取一年中弱者的数量,但在我的计算机中,2020 年它返回 53,但在服务器中它返回 52!我不知道为什么?
Integer getNumberOfWeeksInYear(@PathParam("year") int year) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
return calendar.getWeeksInWeekYear();
}
最佳答案
两个答案 - 52 周和 53 周 - 都是正确的。也就是说,在不同的区域设置中。
2020 年是闰年,从周三开始,周四结束。不同的地区以不同的方式计算周数。例如:
还有几点需要注意:
Calendar
类设计不佳且早已过时。Calendar.getInstance
为您提供基于默认语言环境的 Calendar
的具体子类的实例。它不能保证为您提供完全支持 getWeeksInWeekYear()
的 Calendar
,因此您的代码可能会崩溃。获取一周中周数的正确而现代的方法是:
WeekFields wf = WeekFields.of(Locale.forLanguageTag("ar-TN"));
int weekYear = 2020;
// The number of weeks is the same as the week number of the last week in the week year.
// So find a date in that last week and query its week number.
// The way to find a date in the last week is:
// find a date in week 1 of the following year and subtract 1 week.
LocalDate aDateInWeek1OfTheFollowingYear = LocalDate.of(weekYear + 1, Month.FEBRUARY, 1)
.with(wf.weekOfYear(), 1);
LocalDate aDateInLastWeek = aDateInWeek1OfTheFollowingYear.minusWeeks(1);
int lastWeekNumber = aDateInLastWeek.get(wf.weekOfYear());
System.out.format("Week year %d has %d weeks.%n", weekYear, lastWeekNumber);
此代码段的输出是:
Week year 2020 has 52 weeks.
关于java - Calendar.getWeeksI Week Year 返回同一年但在不同系统中的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58439403/
我正在使用这种方法来获取一年中弱者的数量,但在我的计算机中,2020 年它返回 53,但在服务器中它返回 52!我不知道为什么? Integer getNumberOfWeeksInYear(@Pat
我是一名优秀的程序员,十分优秀!