У меня проблемы с часовыми поясами в полях 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)
Спасибо