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