2011-07-15 63 views
4

Facebook API(使用FQL)为我提供基于太平洋时区的时间戳。它代表1970年1月1日以来的秒数。 我位于法国和法国,夏季时间为GMT + 2,冬季时间为GMT + 1。所有基于本地的日期/时间函数都很好地处理了这个“夏令时变化”。从PST/PDT(Facebook时间戳)转换为UTC

正如你已经想通了,我尝试将Facebook返回的时间戳转换为法国时间。今天我发现,Facebook返回1310788800我的星期五,7月15日21:00(法国时间显示在Facebook网站上)。 Facebook的详细信息,他们的时区是PST(格林威治标准时间-8小时)。 1310788800是UTC的7月15日20:00星期五,导致在法国22:00。

所以他们是导致我对这些结论1额外小时:不是基于PST但PDT(考虑到他们的所有日期的夏天 时间magick变化

  • 或Facebook - 它似乎不太现实)
  • 或法语夏季时间变化,不考虑对Facebook 网站和DB
  • 都意味着,Facebook的API是很难使用的人从他们的服务器和Facebook的时间管理远 进行编码用脚

无论如何,问题都是一样的。我希望能够在冬季和夏季转换此日期。为此,我必须将此时间视为基于PDT并将其转换为UTC时间。

你有没有提示使用python将PDT更改为UTC?

感谢您的帮助!

+0

“(考虑到所有日期的夏令时magick变化 - 这似乎不现实)”显然你分享夏令时的观点,大多数开发商有... –

+0

什么是正确的观点日光还是通用时间节省? – iwalktheline

+1

“正确的观点”是,适合全球观众的API不应使用本地时间,而应使用UTC。但是不要让我开始关于Facebook与其他人没有很好地玩。 – geoffspear

回答

1

我不得不使用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)) 

该解决方案来自于我以前的帖子:Changing a unix timestamp to a different timezone

希望它可以帮助