将毫秒转换为 ZonedDateTime 不起作用

nim*_*o23 1 java date epoch milliseconds zoneddatetime

我有这个毫秒:

1570046362841
Run Code Online (Sandbox Code Playgroud)

使用版本 1转换时:

var myDate = ZonedDateTime.ofInstant(Instant.ofEpochSecond(1570046362841), ZoneId.of("America/New_York"));
Run Code Online (Sandbox Code Playgroud)

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

+51722-10-16T03:58:54-04:00[America/New_York]
Run Code Online (Sandbox Code Playgroud)

但是,使用版本 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);
Run Code Online (Sandbox Code Playgroud)

我得到正确的结果:

2019-10-02 15:59:59 934
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*dis 5

而不是Instant.ofEpochSecond()你需要使用,Instant.ofEpochMilli()因为你有millis。