将 millis 转换为 ZonedDateTime 不起作用

我有这个毫秒:


1570046362841

使用版本 1进行转换时:


var myDate = ZonedDateTime.ofInstant(Instant.ofEpochSecond(1570046362841), ZoneId.of("America/New_York"));

我会得到这个结果(这是错误的!):


+51722-10-16T03:58:54-04:00[America/New_York]

但是,当使用版本 2进行转换时:


 final String dateFormat = "yyyy-MM-dd HH:mm:ss SSS";

 SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);

 formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));

 var dateObj = new Date(1570046362841);

 var myDate = formatter.format(dateObj);

我得到正确的结果:


2019-10-02 15:59:59 934

为什么版本1是错误的?版本 1 有什么问题?


手掌心
浏览 69回答 1
1回答

largeQ

而不是Instant.ofEpochSecond()你需要使用,Instant.ofEpochMilli()因为你有毫秒。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java