java - 根据年份和年份中的星期获取 LocalDateTime

标签 java datetime java-8 java-time

我有两个整数:yearweek。我想从这两个值构造一个 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/

相关文章:

java - 使用 getText 获取整数

javascript - 在 jquery/javascript 中以 yyyy-mm-dd hh-mm 格式格式化日期(以毫秒为单位接收)

python - 为什么在提供 int 系列时 pd.to_timedelta 会失败?

java - 为什么 String.chars() 在 Java 8 中是整数流?

java - 我可以启动一个 Eden 空间如此之大的 JVM,它运行到完成而没有任何 GC。假设我有一堆空闲内存

java - StreamAPI Collectors.groupingBy 空集合而不是 null

java - DnD - 为什么拖动的标签显示在其他组件下方?

java - 在子类中重写@JsonIgnore

c# - 如何在 C# 中获取昨天和明天的日期时间

java - 从 HashMap 导出 afterNodeAccess