y:
¿Cómo puedo convertir esta época UNIX "1,583,388,944.0912497" en un tipo Java Marca de tiempo?
¿Debo deshacerme de los números de precisión después del período con el fin de utilizar Instant.from * o Long.valueOf?
Gracias
Albahaca Bourque:
Dividir la cadena en dos partes, un recuento de segundos enteros y un recuento de nanosegundos.
Evitar el uso de la tecnología de punto flotante que se mantenga cotizando exactitud de distancia para la velocidad de ejecución.
String string = "1583388944.0912497" ;
String[] parts = string.split("\\.") ;
String part1 = parts[0] ; // 1583388944
String part2 = parts[1] ; // 0912497
Analizar como enteros largos. Debemos multiplicar la segunda parte para conseguir nanosegundos.
long seconds = Long.parseLong( part1 ) ;
long nanos = Long.parseLong( part2 ) * 100 ;
Alimentación a un método de fábrica a una instancia de un Instant
objeto.
Instant instant = Instant.ofEpochSecond( seconds , nanos ) ;