【发布时间】:2021-08-31 04:07:34
【问题描述】:
我可以像这样将 19 位 unix 时间戳转换为 LocalDateTime
Instant instant =
Instant.ofEpochSecond(
TimeUnit.NANOSECONDS.toSeconds(timestamp),
(timestamp % 1_000_000_000L));
return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
对于 16 位(微秒)时间戳,我如何做到这一点? 如何从 LocalDateTime 转换回 19 / 16 位时间戳?
谢谢
【问题讨论】:
-
你看过文档了吗?有一个
LocalDateTime.toInstant(ZoneOffset),您可以使用它来转换回Instant,然后在那个瞬间调用toEpochMilli()和getNanon()。 -
这就像在问“我可以将 5.2 舍入到 5.0,但是如何将 5.0 转换为 5.2” 如果您没有将丢弃的值存储在某个变量中并想出一些解决方案,则无法添加精度将该精度添加到转换后的值。
-
首选
ZonedDatteTime作为您自己(本地)时区的日期和时间。此外,通过转换为LocalDateTime,您会丢弃信息,这将使相反的转换变得不可能。