2015-07-21 81 views
4

我找不到替代toDateTimeAtStartOfTheDay。例如 DateTime.now().toLocalDate().toDateTimeAtStartOfDay().plusHours(10)从Joda时间迁移到Java 8日期时间

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

+0

Do y你只需要那个字符串? – Tom

+0

是的。时间以这种格式。 –

+0

然后尝试'ZonedDateTime.now().format(DateTimeFormatter.ofPattern(“yyyy-MM-dd'T10:00:00.000'Z”)''),并且不要打算计算10点钟,如果你只是可以使用固定模式为 – Tom

回答

3

如果您需要的时候为格式的字符串,你总是喜欢拿今天的10点,那就不必手动计算那段时间,并将其写入格式模式:

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

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

你可以格式化的时间是这样的:

ZonedDateTime.now().format(format); 

输出将是:

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

3

您可以使用:

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