java - 获取日期的星期数(从星期三开始的星期)
问题描述
LocalDate initial = LocalDate.now();
DayOfWeek dayOfWeek = DayOfWeek.WEDNESDAY;
WeekFields weekFields = WeekFields.of(dayOfWeek, 1);
int weekNo = date.get(weekFields.weekOfWeekBasedYear());
System.out.println("Week No"+weekNo);
我将上面的代码用于日期 2018-07-29。我预计第 30 周,但我得到 31。
为了得到 30 的结果,我在这里缺少什么?
解决方案
如果您根据ISO-8601预期输出,当前周是第 30 周,您需要遵循以下步骤:
根据 ISO-8601 标准的周数,从星期一开始的周数。一年中的第一周是包含该年第一个星期四的周(='第一个 4 天周')。
这是由WeekFields.ISO
.
相反,如果您希望一周从 开始WEDNESDAY
,您只需将minimalDaysInFirstWeek
from更改1
为4
(='First 4-day week'):
LocalDate date = LocalDate.now();
WeekFields weekFields = WeekFields.of(DayOfWeek.WEDNESDAY, 4);
int weekNo = date.get(weekFields.weekOfWeekBasedYear());
System.out.println("Week No " + weekNo);
推荐阅读
- mysql - 如何聚合不同粒度级别的加权平均字段?
- swagger-ui - 如何在 swagger UI 中测试休息服务时将查询参数传递给 url
- angular - 如何根据其他单选按钮组值向单选按钮组显示和添加验证
- python - 从txt文件中查找关键字并复制目标文件
- docker - dockerd --max-concurrent-downloads 1 命令未找到
- python - 如何在 Activation('elu') 层中设置'alpha'参数
- python - 移至 ReportLab 中的下一帧
- spring-boot - 如何在 Spring 中通过静态方法发布 bean
- php - Wordpress orderby 数组中的元值
- android - Android 蓝牙打印机应用程序在调试模式下工作正常,但在发布模式下不工作