我不完全确定“当前毫秒”是什么意思,但我假设它是自“纪元”即 UTC 1970 年 1 月 1 日午夜以来的毫秒数。
如果您想找到从现在System.currentTimeMillis()
开始的毫秒数,请按照Anubian Noob 指出的那样使用。如果是这样,就没有理由使用任何新的 java.time API 来执行此操作。
但是,也许您已经LocalDateTime
从某个地方获得了一个或类似的对象,并且您想将其转换为自纪元以来的毫秒数。不可能直接这样做,因为LocalDateTime
对象族不知道它们所处的时区。因此,需要提供时区信息来查找相对于 UTC 的纪元的时间。
假设你有一个LocalDateTime
这样的:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
您需要应用时区信息,并给出ZonedDateTime
. 我和洛杉矶在同一个时区,所以我会做这样的事情:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
当然,这是对时区的假设。并且可能会发生一些极端情况,例如,如果本地时间恰好命名为接近夏令时(夏令时)转换的时间。让我们把这些放在一边,但你应该知道这些情况是存在的。
无论如何,如果你能得到一个 valid ZonedDateTime
,你可以将它转换为自纪元以来的毫秒数,如下所示:
long millis = zdt.toInstant().toEpochMilli();