将Facebook活动的开始/结束时间转换为UTC
我在从Facebook获取事件的开始和结束时间时遇到了麻烦,想要的是UTC格式的时间。
我正在使用Facebook的Python库,运行这些查询来获取事件:
fb_events = graph.get_connections(fb_user["id"], "events", args=["date_format=U"])
for item in fb_events['data']:
curr_event = graph.get_object(item['id'], args=["date_format=U"])
代码的最后一行是我实际获取事件的地方,其中包含开始和结束时间。参数:"date_format=U"
本来是用来指定时间格式为Unix时间,这种时间格式本身就是UTC的,但这段代码仍然返回了正常的Facebook时间戳,也就是本地时间。
我该如何才能获取到UTC时间的信息,或者获取到某种在不同时间区域都一致的时间呢?
谢谢!
1 个回答
2
以下内容可能会帮助你进行转换:
import pytz, datetime, time
import os
originalTimeStamp = os.stat("/tmp/file-from-us-west-coast").st_mtime
# prints e.g. 2010-03-31 13:01:18
print "original:",datetime.datetime.fromtimestamp(originalTimeStamp)
# re-interpret
originalTimeZone = "America/Los_Angeles"
targetTimeZone = "Europe/Paris"
newTimeStamp = pytz.timezone(originalTimeZone).localize(datetime.datetime.fromtimestamp(originalTimeStamp)).astimezone(pytz.timezone(targetTimeZone))
# prints e.g. 2010-03-31 22:01:18+02:00
print "new: ",newTimeStamp
# convert back to seconds since epoch
newTimeStamp = time.mktime(newTimeStamp.timetuple())
# print time difference in hours
print (newTimeStamp - originalTimeStamp) / 3600.0
想了解更多信息,可以查看这个链接:http://pytz.sourceforge.net/
这是另一个代码示例:
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))