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
答案 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)通常使用起来更好,所以为什么不把它作为习惯呢?