如何在java 8中将UTC区域中的当前日期作为long值获取

如何在Java 8日期时间API中实现以下目标

long currentDate = Date.UTC(date.getYear(),date.getMonth(),date.getDate(),0);
System.out.println(currentDate);

以上代码返回

  

1573171200000

我已经尝试关注

ZonedDateTime zonedDateTime = Instant.now().atZone(ZoneOffset.UTC);
System.out.println(zonedDateTime.toEpochSecond());

返回

  

1573212520

yue521671314 回答:如何在java 8中将UTC区域中的当前日期作为long值获取

获取今天的LocalDate,在一天开始时将其转换为ZonedDateTime,然后转换为Instant并获取纪元:

LocalDate.now().atStartOfDay(ZoneOffset.UTC).toInstant().toEpochMilli()
,

实际上,这两个结果是正确的,只是您误会了发生的情况:

在第一个使用日期的语句中,您将小时,分钟,秒定义为0

对于ZoneDateTime,您使用的是now(),它将为您提供当前日期时间

要获得相同的时间,我想您需要:

ZonedDateTime zonedDateTime = ZonedDateTime.of(LocalDate.now(),LocalTime.of(0,0),ZoneOffset.UTC);
 Long zdtm = zonedDateTime.toInstant().toEpochMilli();

现在两种方法都返回:

1573171200000
1573171200000

Ideone demo

,

如果您不需要ZonedDateTime,请使用

System.out.println(Instant.now().toEpochMilli());

编辑:我误会了您从一开始就需要小米。 YCF_L加上Holger的答案是正确的。

致谢

本文链接:https://www.f2er.com/3138280.html

大家都在问