Java 将毫秒转换为ZoneDateTime不工作

Java 将毫秒转换为ZoneDateTime不工作,java,epoch,milliseconds,zoneddatetime,date,Java,Epoch,Milliseconds,Zoneddatetime,Date,我有一个很长的毫秒: 1570046362841 使用版本1进行转换时: var myDate = ZonedDateTime.ofInstant(Instant.ofEpochSecond(1570046362841), ZoneId.of("America/New_York")); final String dateFormat = "yyyy-MM-dd HH:mm:ss SSS"; SimpleDateFormat formatter = new SimpleDateFormat

我有一个很长的毫秒:

1570046362841
使用版本1进行转换时:

var myDate = ZonedDateTime.ofInstant(Instant.ofEpochSecond(1570046362841), ZoneId.of("America/New_York"));
 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);
我将得到这个结果(这是错误的!):

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

var myDate = ZonedDateTime.ofInstant(Instant.ofEpochSecond(1570046362841), ZoneId.of("America/New_York"));
 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有什么问题?

而不是
Instant.ofepochssecond()
您需要使用
Instant.ofEpochMilli()
,因为您有毫秒

您需要使用
Instant.ofEpochSecond()
而不是
Instant.ofEpochMilli()
,因为您有毫秒

@OleV.V。想知道为什么你把这个标记为重复的,因为唯一与这个问题相关的相似的东西是问题。不同的方法。提供了不同的代码和所有内容。不同的复制过程。相关:@MichaelMichailidis是正确的,他认为这不是一个精确的复制品,他很好地总结了相似性和差异性。谢谢你,迈克尔。想知道为什么你把这个标记为重复的,因为唯一与这个问题相关的相似的东西是问题。不同的方法。提供了不同的代码和所有内容。不同的复制过程。相关:@MichaelMichailidis是正确的,他认为这不是一个精确的复制品,他很好地总结了相似性和差异性。谢谢,迈克尔。