【问题标题】:How to read an existing TimeStamp?如何读取现有的时间戳?
【发布时间】:2020-06-02 08:52:36
【问题描述】:

我正在处理其他人的代码,并且正在获取一个带有现有时间戳的 JSON 对象:

"lastModification": 1582013867500

好吧,我正在努力阅读这篇文章。我检查了 TimeStamp 文档,但我仍然不知道如何阅读。 有人可以帮忙吗?

谢谢!

【问题讨论】:

  • 你想把它转换成人类可读的日期格式吗?
  • 不,我想用新的时间戳更新对象。但首先我想了解架构
  • Unix 纪元或 POSIX 时间或 Unix 时间戳 - 自 1970 年 1 月 1 日午夜预测协调世界时 (UTC) 以来经过的秒数。您当前的时间戳以毫秒为单位。
  • 正如@J-Alex 评论的那样,您的示例millis 的值是2020-02-18T08:17:47.5Z (UTC)
  • 哦,是的,你说得对。您能否发布一个答案,以便我将其标记为正确

标签: java json timestamp


【解决方案1】:

Unix 纪元或 POSIX 时间或 Unix 时间戳 - 自 1970 年 1 月 1 日午夜预测协调世界时 (UTC) 以来经过的秒数。

您当前的时间戳以毫秒为单位。

您可以使用转换工具在线阅读,例如https://www.epochconverter.com/

Java 时间库支持秒和毫秒转换:

LocalDateTime.ofInstant(Instant.ofEpochMilli(lastModification),
                        TimeZone.getDefault().toZoneId());

// OR using ZoneId

LocalDateTime.ofInstant(Instant.ofEpochMilli(lastModification),
                        ZoneId.systemDefault());
LocalDateTime.ofInstant(Instant.ofEpochSecond(lastModification),
                        ZoneId.systemDefault());

【讨论】:

    【解决方案2】:

    时间戳是自 1970 年 1 月 1 日以来的某个时刻,以毫秒为单位。

    您可以像这样使用java.time 使其可读:

    public static void main(String[] args) {
        long millis = 1582013867500L;
        Instant instant = Instant.ofEpochMilli(millis);
        ZonedDateTime zdt = ZonedDateTime.ofInstant(instant, ZoneOffset.UTC);
        System.out.println(zdt.format(DateTimeFormatter.ISO_ZONED_DATE_TIME));
    }
    

    输出是

    2020-02-18T08:17:47.5Z
    

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      • 2019-09-22
      相关资源
      最近更新 更多