Java 8 LocalDateTime 今天在特定时间

新手上路,请多包涵

有没有更好/更简单的方法来构建 LocalDateTime 表示今天早上 6 点的对象?

 LocalDateTime todayAt6 = LocalDateTime.now().withHour(6).withMinute(0).withSecond(0).withNano(0);

不知何故,当我只想说 now().withHours() 时,我不喜欢处理分钟/秒/纳米。

原文由 JanM 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 447
2 个回答

LocalDate 有各种重载 atTime 方法,比如 这个,它有两个参数(一天中的小时和分钟):

 LocalDateTime todayAt6 = LocalDate.now().atTime(6, 0);

原文由 assylias 发布,翻译遵循 CC BY-SA 3.0 许可协议

另一种选择(特别是如果你想改变一个已经存在的 LocalDateTime )是使用 with() 方法

它接受 TemporalAdjuster 作为参数。根据 javadoc ,将 LocalTime 传递给此方法正是您所需要的:

LocalDate 和 LocalTime 类实现了 TemporalAdjuster,因此该方法可用于更改日期、时间或偏移量:

结果 = localDateTime.with(date);

结果 = localDateTime.with(时间);

所以,代码将是:

 LocalDateTime todayAt6 = LocalDateTime.now().with(LocalTime.of(6, 0));

原文由 user7605325 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题