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

时间:2011-07-15 15:12:04

标签: python facebook datetime timezone

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

正如您已经想到的那样,我尝试将Facebook返回的时间戳转换为法国时间。今天我发现Facebook在7月15日星期五21:00(法国时间在Facebook网站上显示)返回1310788800。 Facebook详细说明他们的时区是PST(GMT-8h)。 1310788800是UTC的7月15日星期五20:00,这导致法国的22:00。

所以他们是一个额外的小时,这导致我得出这些结论:

  • 或Facebook不是基于PST而是基于PDT(考虑到夏天 时间magick改变所有日期 - 似乎不太现实)
  • 或者在Facebook中没有考虑法国的夏令时变化 网站和数据库
  • 两者都暗示Facebook API很难用于人们 从他们的服务器和Facebook时间管理用脚编码

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

您是否有提示使用python将PDT更改为UTC?

感谢您的帮助!

2 个答案:

答案 0 :(得分: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))

此解决方案来自我之前的帖子:Changing a unix timestamp to a different timezone

希望它可以提供帮助

答案 1 :(得分:1)

在python中将PDT更改为UTC,请使用pytz。

但似乎facebook API比这更棘手。见Facebook Events and timezones, how to convert UTC datetime to what facebook expects?