将Facebook活动的开始/结束时间转换为UTC

3 投票
1 回答
1038 浏览
提问于 2025-04-17 11:10

我在从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))

撰写回答