Twitter的用户时间线API以两种不同的方式在其响应有效负载中为我提供时区信息 - utc_offset
(整数(和time_zone
(字符串(
例如"utc_offset":-18000,"time_zone": "东部时间(美国和加拿大(",
我打算通过我的 Spring 应用程序将时区字符串字段存储在 PostgreSQL 中,并希望以后能够使用相同的时间戳得出正确的时间戳。
这意味着我应该能够解析time_zone
字段以获取时区信息,但其格式不符合java.util.TimeZone
期望。我试过了,因为它无法解析上述格式,所以它回退到 UTC。
有没有一个Java库可以理解Twitter给出的格式?很难想象Twitter会在其提要中使用非标准的时区格式。
注意:- 我正在寻找纯粹的基于Java的解决方案,而不是Rails
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
老实说,我不知道它会对你有多大帮助,我承认它处于作弊的边缘。真正发生的是格式化程序仅解析"东部时间"并停止。这足以使它可以将时区识别为美国/New_York。ParsePosition
用于指定我们不需要它来解析所有字符串。
你提到了java.util.TimeZone
.我鼓励你放弃那个课程和它的朋友,他们早就过时了。 java.time
,现代Java日期和时间API也称为JSR-310通常更好用,所以你为什么不养成这个习惯呢?