【问题标题】:How to interpret data-time in Twitter DM如何在 Twitter DM 中解释数据时间
【发布时间】:2016-07-23 21:35:14
【问题描述】:

如果我从 Twitter 中的直接消息页面保存源 html,我会发现类似这样的内容,其中似乎包含详细的时间戳:

7 月 22 日

如果我读取这些数据(例如,在 Java 中,仅包括 java.io.*),有没有办法可以将 data-time="1469168058" 中的数字转换为日期和时间,包括小时和分钟,甚至可能是秒?

【问题讨论】:

  • 还有 thisthis 的副本等等。发帖前请先搜索 Stack Overflow。
  • 请@Basil 仔细阅读我的问题。我没有问如何在 Java 中转换“从纪元开始的秒数”。我从 Twitter 和 html 扫描开始。如果这与 Java 时代的秒数相同,那很好。就告诉我嘛。我进行了搜索,但找不到对“数据时间”的引用。对不起。
  • 因此这不是一个重复的问题 - 有两个原因。首先,正如我上面所说,这是一个 Twitter 问题。其次,“重复”的答案并不完全正确——Twitter 会根据我的当地时间调整秒值。本地时间的转换是正确的如果我没有设置时区。
  • 感谢@Basil 为我指明了时间显示示例的方向。它为我编写解决方案节省了一些“时间”(双关语)。 :)

标签: java twitter time


【解决方案1】:

Unix/Posix 时间

大约 150 万的计数通常表示自 1970 年第一刻在UTC 中的整秒计数。这通常称为Unix time or Posix time

java.time

在 Java 中,UTC 时间轴上分辨率为nanosecond 的时刻由Instant 类表示。

long input = 1_469_168_058L;
Instant instant = Instant.ofEpochSecond ( input );

要通过特定时区的镜头查看同一时刻,请应用 ZoneId 以生成 ZonedDateTime 对象。

ZoneId zoneId = ZoneId.of ( "America/Chicago" );
ZonedDateTime zdt = instant.atZone ( zoneId );

转储到控制台。

System.out.println ( "input: " + input + " | instant: " + instant + " | zdt: " + zdt );

输入:1469168058 |瞬间:2016-07-22T06:14:18Z | zdt: 2016-07-22T01:14:18-05:00[美国/芝加哥]

此结果与您的数据块中也包含的 7 月 22 日相匹配。

【讨论】:

    猜你喜欢
    • 2015-07-14
    • 2019-01-08
    • 2016-08-30
    • 2018-12-07
    • 1970-01-01
    • 2019-01-25
    • 2013-05-04
    • 1970-01-01
    • 2020-04-06
    相关资源
    最近更新 更多