每秒钟的上调时间:1529948813696000
如何将其转换为Java时间戳。
我可以使用这种方法以毫秒为单位转换时间
Instant instant = Instant.ofEpochMilli(Long.parseLong("1529957592000"));
Date parsedDate = dateFormat.parse(instant.atZone(ZoneId.of("America/Chicago")).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS")).toString())
是否需要转换以微秒为单位的纪元时间?
答案 0 :(得分:7)
虽然Instant
类没有ofEpochNano(long)
方法,但确实有ofEpochSecond(long, long)
重载,它接受了一个纳秒级的偏移量和历元秒。
只需一点数学,您就可以将纪元微秒转换为秒加偏移量,并使用它来创建Instant
,就像这样:
long epochMicroSeconds = 1_529_948_813_696_123L;
long epochSeconds = epochMicroSeconds / 1_000_000L;
long nanoOffset = ( epochMicroSeconds % 1_000_000L ) * 1_000L ;
Instant instant = Instant.ofEpochSecond( epochSeconds, nanoOffset ) ;
请参阅此code run live at IdeOne.com。
instant.toString():2018-06-25T17:46:53.696123Z