【发布时间】:2019-07-14 15:16:54
【问题描述】:
鉴于:
- 一年:2019
- 日历周数:1(== 一年中的第一周)
- 一周的一天:星期日
需要:
将这些信息转换为 LocalDate 对象,以便
assertEquals(LocalDate.of(2019,1,6), f(2019,1,SUNDAY))
我尝试了什么
我没有找到使用 java.time.* 从“2019 年第一个日历周的星期日”之类的信息创建日期的方法。我发现旧的 java.util.Calendar 类有一个可能有用的 setWeekDate() 函数。但是下面的代码导致了异常:
...
Calendar c = Calendar.getInstance();
c.setWeekDate(2019, 1, Calendar.MONDAY);
c.setTimeZone(TimeZone.getDefault());
return LocalDate.from(c.toInstant());
java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: 2018-01-08T20:03:55.602Z of type java.time.Instant
at java.time.LocalDate.from(LocalDate.java:379)
at ...
【问题讨论】:
-
“一年中的第一周” - 这周是从 1 月 1 日开始吗?
-
您不想使用设计不佳且早已过时的
Calendar类。 java.time 提供了您需要的所有功能。但是,作为@JacobG。提示,您需要定义“日历周数”,因为存在多个标准。 -
@Mika 的解决方案正是我所需要的。
标签: java datetime week-number localdate