如何将此 unix 纪元字符串“1583388944.0912497”转换为 Java 时间戳类型?

How to turn this unix epoch string "1583388944.0912497" into a Java Timestamp type?

如何将这个 unix 纪元“1583388944.0912497”转换为 Java 时间戳类型?

为了使用 Instant.from* 或 Long.valueOf,我应该去掉句点后的精度数字吗?

谢谢

将字符串分成两部分,整秒数和纳秒数。

避免使用浮点技术,因为它会牺牲准确性来换取执行速度。

String string = "1583388944.0912497" ;
String[] parts = string.split("\.") ;
String part1 = parts[0] ; // 1583388944
String part2 = parts[1] ;  // 0912497

解析为长整数。我们必须将第二部分相乘以获得纳秒。

long seconds = Long.parseLong( part1 ) ;
long nanos = Long.parseLong( part2 ) * 100 ;

提供工厂方法以实例化 Instant 对象。

Instant instant = Instant.ofEpochSecond( seconds , nanos ) ;