从Joda时间迁移到Java 8 DateTime

时间:2015-07-21 17:43:07

标签: java datetime java-8 jodatime

我找不到替代toDateTimeAtStartOfTheDay。例如 DateTime.now().toLocalDate().toDateTimeAtStartOfDay().plusHours(10)

我如何在Java 8的DateTime库中编写上面的代码? 最近我来ZonedDateTime.now().toLocalDate().atStartOfDay(),只打印2015-07-21T00:00。 我想要2015-07-21T00:00:00.000-04:00

之类的东西

2 个答案:

答案 0 :(得分:3)

如果您需要将时间作为格式化的字符串,并且您总是想要获得今天的10点钟,那么请不要手动计算时间并将其写入格式模式:

Mock

每个字母的含义可以在这里找到:JavaDoc of DateTimeFormatterDateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T10:00:00.000'XXX"); 是一个固定的字符串,不会被解析,只是"添加"到返回的String。

您可以像这样获得格式化的时间:

'T10:00:00.000'

输出结果为:

  

2015-07-21T10:00:00.000-04:00

答案 1 :(得分:3)

您可以使用:

 LocalDate.now().atStartOfDay().atZone(ZoneId.systemDefault());