Vih*_*ung 182 java datetime java-8 java-time
我有一个外部API返回我的日期为longs,表示自Epoch以来的毫秒数.
使用旧式Java API,我只需用Date它构造一个
Date myDate = new Date(startDateLong)
Run Code Online (Sandbox Code Playgroud)
Java 8 LocalDate/ LocalDateTimeclasses中的等价物是什么?
我有兴趣将长度所代表的时间点转换为long当前本地时区.
Hol*_*ger 356
如果您有自Epoch以来的毫秒数并希望使用当前本地时区将它们转换为本地日期,则可以使用
LocalDate date =
Instant.ofEpochMilli(longValue).atZone(ZoneId.systemDefault()).toLocalDate();
Run Code Online (Sandbox Code Playgroud)
但请记住,即使系统的默认时区也可能发生变化,因此相同的long值可能会在后续运行中产生不同的结果,即使在同一台机器上也是如此.
此外,请记住LocalDate,与java.util.Date实际上代表的是日期,而不是日期和时间.
否则,您可以使用LocalDateTime:
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
Run Code Online (Sandbox Code Playgroud)
Men*_*ild 35
你可以从Instant.ofEpochMilli(长)开始:
LocalDate date =
Instant.ofEpochMilli(startDateLong)
.atZone(ZoneId.systemDefault())
.toLocalDate();
Run Code Online (Sandbox Code Playgroud)
Abh*_*eet 12
我想我有更好的答案.
new Timestamp(longEpochTime).toLocalDateTime();
Run Code Online (Sandbox Code Playgroud)
除了时区和其他东西之外,一个非常简单的替代方案new Date(startDateLong)可能是LocalDate.ofEpochDay(startDateLong / 86400000L)
基于@Michael Piefel 答案的简单版本:
LocalDate myDate = LocalDate.ofEpochDay(Duration.ofMillis(epochMillis).toDays());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
152192 次 |
| 最近记录: |