fecha - manejo de horas en java
marca de tiempo larga a LocalDateTime (4)
Intenta con lo siguiente ..
long test_timestamp = 1499070300000L;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), TimeZone
.getDefault().toZoneId());
Por defecto, 1499070300000
es int si no contiene l en final. También pasa el tiempo en milisegundos.
Tengo una marca de tiempo larga 1499070300 (equivalente a lunes, 03 de julio de 2017 16:25:00 +0800) pero cuando la convierto a LocalDateTime, obtengo 1970-01-18T16: 24: 30.300
Aquí está mi código
long test_timestamp = 1499070300;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), TimeZone
.getDefault().toZoneId());
Necesitas pasar la marca de tiempo en milisegundos:
long test_timestamp = 1499070300000L;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp),
TimeZone.getDefault().toZoneId());
System.out.println(triggerTime);
Resultado:
2017-07-03T10:25
O use ofEpochSecond
en ofEpochSecond
lugar:
long test_timestamp = 1499070300L;
LocalDateTime triggerTime =
LocalDateTime.ofInstant(Instant.ofEpochSecond(test_timestamp),
TimeZone.getDefault().toZoneId());
System.out.println(triggerTime);
Resultado:
2017-07-03T10:25
Pruebe con el Instant.ofEpochMilli()
o Instant.ofEpochSecond()
con él-
long test_timestamp = 1499070300L;
LocalDateTime date =
LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp ), TimeZone
.getDefault().toZoneId());
Su problema es que la marca de tiempo no está en milisegundos, sino que se expresa en segundos desde la fecha de Época. Multiplique por 1000 su marca de tiempo o use el Instant.ofEpochSecond()
.