Проблемы с часовыми поясами с отметками времени в таблице FQL «событие» - PullRequest
0 голосов
/ 28 сентября 2011

У меня проблемы с часовыми поясами в полях start_time и end_time в таблице FQL event. Я хочу показать метку времени в отформатированной дате, которая учитывает часовой пояс пользователя. Опытным путем кажется, что временные метки находятся в часовом поясе PST, поэтому я конвертирую их в GMT и добавляю часовой пояс пользователя, который содержится в поле timezone в таблице user. Преобразование в GMT выполняется Java со следующим кодом (это должно учитывать летнее время автоматически):

long millis = 1000 * timestamp;
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
int offset = tz.getOffset(millis);
long timestampGMT = millis + offset;

Однако такой подход дает результаты, отличные от результатов на сайте Facebook. Например, у меня есть событие с start_time = 1317416400 и пользователь с timezone = 2. Преобразование в GMT и добавление часового пояса пользователя я получаю 30 сентября 2011 года, 16:00:00, но сайт Facebook показывает 30 сентября 2011 года, 14: 00: 00.

Как я могу получить правильный (как на сайте FB) результат?

Примеры:

Summer:
http://www.facebook.com/event.php?eid=234094353309432
Created by a user on GMT+2
Time shown on the site: Friday, September 30 · 2:00pm - 7:00pm
start_time (from FQL): 1317416400
If it was UTC, then: Friday, September 30th 2011, 21:00:00 (GMT)
If it was PDT (with DST, so GMT-7), then: Friday, September 30th 2011, 14:00:00 (GMT-7)

Winter:
http://www.facebook.com/event.php?eid=254174591293234
Created by a user on GMT+2
Time shown on the site: Sunday, December 25 · 1:00pm - 4:00pm
start_time (from FQL): 1324846800
If it was UTC, then: Sunday, December 25th 2011, 21:00:00 (GMT)
If it was PST (no DST, so GMT-8), then: Sunday, December 25th 2011, 13:00:00 (GMT-8)

Спасибо

...