我有两个整数:year
和 week
。我想从这两个值构造一个 LocalDateTime
,其中日期代表特定年份特定周的第一天。
我已经试过了:
LocalDateTime ldt = LocalDateTime.of(year, 1, 1, 0, 0).plusWeeks(week-1);
这并没有给出正确的结果,因为一年的第一天并不总是那年第一周的开始。我似乎也不知道如何获得第一周的第一天。
是否有任何简单的方法可以使用 Java 8 中的日期和时间 API 执行此操作?
注意:我知道我也可以根据给定的答案创建一个解决方法 here ,但这似乎有些牵强。也许不是,如果是,请告诉我!
最佳答案
以下代码将获取 LocalDateTime
并将其设置为给定年份的给定星期的第一天:
int week = 1;
int year = 2016;
WeekFields weekFields = WeekFields.of(Locale.getDefault());
LocalDateTime ldt = LocalDateTime.now()
.withYear(year)
.with(weekFields.weekOfYear(), week)
.with(weekFields.dayOfWeek(), 1);
System.out.println(ldt);
请注意,一年中的星期的概念是特定于语言环境的。在这里,我使用了默认的语言环境,但您可能需要使用用户提供的语言环境。
如果你想去掉时间部分,你可以添加对truncatedTo(ChronoUnit.DAYS)
的调用。
关于java - 根据年份和年份中的星期获取 LocalDateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822244/