无法解析twitter API提供的时区字符串

时间:2017-11-16 07:31:39

标签: java timezone twitter-timeline

Twitter的用户时间线API以两种不同的方式在其响应有效负载中提供时区信息 - function createBlocks(n) { const blockArray = []; const B = { x: 100, y: 100, width: 35, height: 35, color: "brown" }; for (var i = 0; i < n; i++) { const temp = { ...B }; // object spread blockArray.push(temp); B.x += 10; } return blockArray; } createBlocks(20); (整数)和utc_offset(字符串)

e.g。 “utc_offset”: - 18000, “time_zone”:“东部时间(美国和加拿大)”,

我打算通过我的Spring应用程序在PostgreSQL中存储时区字符串字段,并希望能够在以后使用相同的时间戳导出正确的时间戳。

这意味着我应该能够解析time_zone字段以获取时区信息,但其格式不符合time_zone期望的内容。我试过了,因为它无法解析上面的格式,它会回退到UTC。

是否有一个了解twitter提供的格式的java库?很难想象Twitter会在其Feed中使用非标准时区格式。

注意: - 我正在寻找纯Java解决方案,而不是Rails

1 个答案:

答案 0 :(得分:0)

    DateTimeFormatter parser = DateTimeFormatter.ofPattern("zzzz");
    String timeZoneFromTwitter = "Eastern Time (US & Canada)";
    ParsePosition position = new ParsePosition(0);
    ZoneId zid = ZoneId.from(parser.parse(timeZoneFromTwitter, position));
    System.out.println(zid);

打印(至少在我的电脑上)

America/New_York

老实说,我不知道它对你有多大帮助,我承认这是在作弊的边缘。真正发生的是格式化程序仅解析“东部时间”并停止。这足以让它将时区识别为America / New_York。 ParsePosition用于指定我们不要求它解析所有字符串。

您提到了java.util.TimeZone。我鼓励你放弃那个班级及其朋友,他们已经过时了。 java.time,现代Java日期和时间API(也称为JSR-310)通常使用起来更好,所以为什么不把它作为习惯呢?