【发布时间】:2011-12-01 12:29:43
【问题描述】:
奇怪的问题,但您必须首先知道 Facebook API 定义了所有带有时间戳的日期(long = 秒数)开始于 01/01/1970 00 :00:00 位于 PDT 时区(太平洋时间)。 这个秒数不是 UTC 时间戳,而是基于非标准位置的虚假时间戳。
在 java 中是否有一种简单的方法可以将此长时间戳转换为我可以使用的普通 Date 对象(并使用标准日期格式化程序以法语格式打印)?
PS:这不仅仅是一个 +7 小时的问题,夏令时包含在这个时间戳中。此外,我们在法国也有夏令时,但不一样......
谢谢
更新: 它比一个固定的增量更复杂。 我认为 Facebook 会将我提供的日期记录为 PSD 日期。如果我记录 2011 年 10 月 26 日星期四 16H00(巴黎时区),Facebook 记录 2011 年 10 月 26 日 16H00(旧金山时区)并将其转换为自 1970 年以来适当的第二个 UTC。问题是这种转换考虑了旧金山的夏令时。 我做了以下基准来证明它:
- (2011 年 12 月 31 日 16:00 - 法国时间)FB 时间戳 = 1325376000 而不是 1325343600(UTC 时间戳)-> 增量:-32400
- (2012 年 7 月 31 日 16:00 - 法国时间)FB 时间戳 = 1343775600 而不是 1343743200 -> 增量:-32400
- (03/10/2012 16:00 - 法国时间)FB 时间戳 = 1349305200 而不是 1349272800 -> Delta : -32400
- (28/10/2012 08:00 - 法国时间)FB 时间戳 = 1351436400 而不是 1351407600 -> Delta : -28800
- (25/03/2012 08:00 - 法国时间)FB 时间戳 = 1332687600 而不是 1332655200 -> Delta : -32400
- (24/03/2012 23:30 - 法国时间)FB 时间戳 = 1332657000 而不是 1332628200 -> Delta : -28800
- (27/10/2012 23:30 - 法国时间)FB 时间戳 = 1351405800 而不是 1351373400 -> Delta : -32400
事实上,我需要一种方法将 31/10/2011 16H00 (PDT) 转换为 31/10/2011 16H00 (Paris TZ)...
【问题讨论】:
标签: java facebook date timezone