从 Joda 时间迁移到 Java 8 DateTime

Migrating from Joda time to Java 8 DateTime

我找不到替代方案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

如果你需要时间作为一个格式化的字符串并且你总是喜欢得到今天的 10 点钟,那么不要费心手动计算那个时间并将它写入一个格式模式:

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd'T10:00:00.000'XXX");

每个字母的含义可以在这里找到:JavaDoc of DateTimeFormatter'T10:00:00.000'是一个固定的字符串,不会被解析,只是"added"到返回的String。

你可以这样获取格式化时间:

 ZonedDateTime.now().format(format);

输出将是:

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

您可以使用:

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