Конвертировать время начала и окончания события Facebook в UTC - PullRequest
3 голосов
/ 27 января 2012

У меня возникают проблемы с началом событий в конечное время в формате UTC с Facebook.

Я использую библиотеку 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 time, который уже указан в UTC, однако этот код по-прежнему возвращает обычные метки времени Facebook по местному времени.

Как получить эту информациюво времени UTC или в какое-то время, согласованное между часовыми поясами?

Спасибо!

1 Ответ

2 голосов
/ 27 января 2012

Следующее может помочь вам сделать преобразование:

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