1

Twitter 的用户时间线 API 以两种不同的方式在其响应负载中为我提供时区信息 - utc_offset(整数)和time_zone(字符串)

例如“utc_offset”:-18000,“time_zone”:“东部时间(美国和加拿大)”,

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

这意味着我应该能够解析该time_zone字段以获取时区信息,但其格式不符合java.util.TimeZone预期。我试过了,因为它无法解析上述格式,所以它回退到 UTC。

是否有理解 twitter 给出的格式的 java 库?很难想象 Twitter 会在其提要中使用非标准时区格式。

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

4

1 回答 1

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,也称为 JSR-310 的现代 Java 日期和时间 API 通常更易于使用,那么您为什么不养成这种习惯呢?

于 2017-11-16T17:31:51.310 回答