I have a long timestamp 1499070300 (equivalent to Mon, 03 Jul 2017 16:25:00 +0800) but when I convert it to LocalDateTime I get 1970-01-18T16:24:30.300
Here's my code
long test_timestamp = 1499070300;  LocalDateTime triggerTime =                 LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), TimeZone                         .getDefault().toZoneId()); LocalDateTime ldt = new LocalDateTime(); DateTimeFormatter dtf = DateTimeFormatter. forPattern("yyyy-MM-dd HH:mm:ss"); Timestamp ts = Timestamp. valueOf(ldt. toString(dtf));
You need to pass timestamp in milliseconds:
long test_timestamp = 1499070300000L; LocalDateTime triggerTime =         LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp),                                  TimeZone.getDefault().toZoneId());    System.out.println(triggerTime); Result:
2017-07-03T10:25 Or use ofEpochSecond instead: 
long test_timestamp = 1499070300L; LocalDateTime triggerTime =        LocalDateTime.ofInstant(Instant.ofEpochSecond(test_timestamp),                                TimeZone.getDefault().toZoneId());     System.out.println(triggerTime); Result:
2017-07-03T10:25 Try with the following..
long test_timestamp = 1499070300000L;     LocalDateTime triggerTime =             LocalDateTime.ofInstant(Instant.ofEpochMilli(test_timestamp), TimeZone                     .getDefault().toZoneId());   By default 1499070300000 is int if it dosen't contain l in end.Also pass time in milliseconds.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With