从PST/PDT (Facebook时间戳) 转换为UTC

4
Facebook API(使用FQL)给我提供了基于太平洋时区的时间戳。它表示自1970年1月1日以来的秒数。我位于法国,法国夏季是GMT+2,冬季是GMT+1。所有基于本地时间的日期/时间函数都能很好地处理这种“夏令时改变”。
正如您已经发现的那样,我试图将Facebook返回的时间戳转换为法国时间。今天我发现,Facebook为我的7月15日星期五21:00返回1310788800(在Facebook网站上显示的法国时间)。Facebook详细说明他们的时区是PST(GMT-8小时)。1310788800是UTC时间下的7月15日星期五20:00,这导致在法国是22:00。
所以他们多了一个小时,这使我得出以下结论:
- Facebook不是基于PST而是基于PDT(考虑到所有日期的夏令时魔法更改-这似乎不现实) - 或者Facebook网站和数据库没有考虑到法国夏令时的变化 - 两者都意味着对于远离其服务器的人来说,Facebook API非常难以使用,而且Facebook的时间管理编码有问题。
无论如何,问题是一样的。我想要能够在夏季和冬季转换此日期。为此,我必须将此时间视为基于PDT并将其转换为UTC时间。
您有使用Python将PDT更改为UTC的提示吗?
感谢您的帮助!

(考虑到夏令时魔法变化适用于所有日期-这似乎不现实)显然,您与大多数开发人员一样对夏令时持有相同的看法... - Daniel DiPaolo
关于夏令时或通用时间的正确观点是什么? - kheraud
1
“正确的观点”是,面向全球受众的API不应使用本地时间,而应使用协调世界时(UTC)。但是,别让我开始谈起Facebook不友好的行为。 - Wooble
2个回答

2
我必须使用 pytz
from datetime import *
from pytz import timezone
import pytz

[...]

if (not isinstance(pacificTime, int)):
    pacificTime = int(pacificTime)
originalTimeZone = "America/Los_Angeles"
print datetime.fromtimestamp(pacificTime, pytz.timezone(originalTimeZone))

这个解决方案来自我的先前帖子: 将Unix时间戳转换为不同的时区 希望它能有所帮助。

1

谢谢,问题已解决 :)。 我的问题仅在于读取使用Facebook事件网站创建的事件日期,我不需要插入新事件。 - kheraud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接