将毫秒转换为ZonedDateTime不起作用

时间:2019-10-03 08:43:36

标签: java epoch milliseconds zoneddatetime java-date

我很久没有这个毫秒了

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有什么问题?

1 个答案:

答案 0 :(得分:4)

您需要使用Instant.ofEpochSecond()而不是Instant.ofEpochMilli(),因为您的手指很强。