如何将小时,分钟,秒和毫秒变为零?

Jon*_*Jon 5 java-8 java-time

我想让我的格式为2016-07-08T00:00:00.000Z.

String myDate = "20160708";
LocalDate myLocalDate = LocalDate.parse(myDate, DateTimeFormatter.BASIC_ISO_DATE);
OffsetDateTime myOffsetDate = myLocalDate.atTime(OffsetTime.now(ZoneOffset.UTC));

System.out.println(myOffsetDate); //2016-07-08T14:58:23.170Z
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

好吧,不要说"我希望它使用当前时间"!这就是这样做:

OffsetTime.now(ZoneOffset.UTC)
Run Code Online (Sandbox Code Playgroud)

如果你只是想一个OffsetDateTimeLocalDate通过提供零偏移和午夜,你可以使用:

OffsetDateTime myOffsetDate = myLocalDate
    .atTime(LocalTime.MIDNIGHT)
    .atOffset(ZoneOffset.UTC);
Run Code Online (Sandbox Code Playgroud)

或者如果您愿意:

OffsetDateTime myOffsetDate = myLocalDate
    .atTime(OffsetTime.of(LocalTime.MIDNIGHT, ZoneOffset.UTC));
Run Code Online (Sandbox Code Playgroud)

(我个人更喜欢第一个版本,我自己...)

请注意,这只是让你正确OffsetDateTime.如果要使用毫秒和秒来格式化,则需要明确地执行此操作:

DateTimeFormatter formatter = DateTimeFormatter
    .ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSX");
System.out.println(myOffsetDate.format(formatter));
Run Code Online (Sandbox Code Playgroud)

正如评论中所述,如果你找到的是一个ZonedDateTime而不是一个OffsetDateTime,你可以使用

ZonedDateTime myOffsetDate = myLocalDate.atStartOfDay(ZoneOffset.UTC);
Run Code Online (Sandbox Code Playgroud)