События и часовые пояса Facebook, как преобразовать дату и время UTC в то, что ожидает Facebook? - PullRequest
2 голосов
/ 09 ноября 2010

Мое приложение должно создавать события на Facebook. Все работает нормально, но я не могу правильно настроить часовой пояс. Все даты начала / окончания неверны. Документы API событий Facebook говорят так:

Примечание. Start_time и end_time - это времена, которые были введены создателем события, преобразованы в UTC после предположения, что они были по тихоокеанскому времени (Daylight Savings или Standard, в зависимости от даты события), а затем преобразованы в Unix время эпохи.

(источник)

Я не могу понять, что это значит.

Мое веб-приложение представляет собой сайт на Python (django). Учитывая datetime объект, который имеет время начала / окончания в UTC, каково волшебное заклинание pytz звонков, чтобы получить правильное время для отправки в facebook?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2010

Это означает, что если пользователь вводит «12:00», вы должны принять его «12:00 по тихоокеанскому времени», преобразовать его в UTC, так что «8:00 по Гринвичу» и превратить его в эпоху Unix.

Вы можете сделать это так:

import datetime, calendar

date_local = datetime.datetime.now() # some date in some timezone
date_utc = date_local.utctimetuple() 
unix_time = calendar.timegm(date_utc) # to unix time
1 голос
/ 09 ноября 2010

" Время эпохи Unix " просто означает "количество секунд с 1 января 1970 года (без учета високосных секунд)".

Кстати, описание API событий Facebook настолько странно, я не могу поверить, что оно правильно, как описано. Кажется, они просят:

  1. Время, которое было введено создателем события;
  2. Интерпретируется как местное время в тихоокеанском часовом поясе с действующими правилами перехода на летнее время для этой зоны;
  3. Преобразовано в UTC.

Я живу в часовом поясе UTC + 0. Поэтому, если я планирую событие на 2010-11-09 12:00:00 UTC, время, которое фактически отправляется в Facebook, (время Unix соответствует) 2010-11-09 20:00:00 UTC. Как это может быть правильно? Может быть, я неправильно понял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...