【问题标题】:Convert Facebook Event start/end times to UTC将 Facebook 活动开始/结束时间转换为 UTC
【发布时间】:2012-01-26 20:50:35
【问题描述】:

我无法从 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"])

代码的最后一行是我实际获取包含开始时间和结束时间的事件的地方。 arg:"date_format=U" 应该指定 unix 时间的时间格式,它已经是 UTC,但是,此代码仍然返回本地时间的正常 Facebook 时间戳。

如何以 UTC 时间或跨时区一致的某种时间获取此信息?

谢谢!

【问题讨论】:

  • Unix 时间不是 UTC,但只要没有闰秒,它们就会相互跟踪。

标签: python facebook facebook-graph-api utc unix-timestamp


【解决方案1】:

以下内容可能会帮助您进行转换:

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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-05
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多