【问题标题】:convert millis to ZonedDateTime not working将毫秒转换为 ZonedDateTime 不起作用
【发布时间】:2020-02-01 13:14:16
【问题描述】:

我有这个很长的毫秒:

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

【问题讨论】:

  • @OleV.V.想知道为什么您将其标记为重复,因为与链接的问题唯一相似的是问题。不同的做法。提供不同的代码和一切。不同的复制过程。
  • 相关:Incorrect Timestamp Value - c.getTimeInMills()。 @MichaelMichailidis 是正确的,它不是完全重复的,他很好地总结了相似之处和不同之处。谢谢,迈克尔。

标签: java epoch milliseconds zoneddatetime date


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多