Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Некорректная работа с часовыми поясами
Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2015
Помог: 0 раз(а)
Надо отформатировать время из timestamp согласно определённому часовому поясу.
Всё хорошо работает с UTC, хорошо работает с Europe/Moscow (UTC+3), но при использовании часовых поясов UTC+1, UTC+2 результат получается ошибочным.
Как видно, у второй, третьей, четвёртой и пятой попытки результат ошибочный.
Никак не могу сообразить в чём проблема.
Тестировал и локально и в online-sandbox`ах на разных версиях PHP — результат аналогичный.
DeepVarvar
Отправлено: 31 Мая, 2015 - 22:46:00
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Это может быть проблема пакета tzdata, если речь о никсоподобных конечно.
Обновить пакет.
А я бы еще и ntp-клиента поставил, если все так критично.
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
Вот мы невнимательные
Тыж сам устанавливаешь таймстамп всем
Он по utc выставляется
Чего ты хочешь добиться вообще?
DeepVarvar
Отправлено: 31 Мая, 2015 - 23:36:25
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Ты не понял, по UTC это для примера, типа дефолт. А дальше получаешь один раз NOW() и используешь его на время жизни скрипта. Можешь вычитать, диффать, добавлять и все такое. Т.е. синхришься на таймзону БД,
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
DeepVarvar Да я вообще не тебе
Смотри код
Он создает по таймзоне а потом меняет установив таймстамп (Добавление) varlog метка времени одинакова для всех зон
varlog
Отправлено: 31 Мая, 2015 - 23:55:24
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2015
Помог: 0 раз(а)
LIME пишет:
метка времени одинакова для всех зон
Да. Я знаю, что timestamp всегда в UTC.
Задача в том, что бы взять timestamp и отформатировать его с учётом пользовательского часового пояса.
LIME пишет:
Он создает по таймзоне а потом меняет установив таймстамп
Вот только интересно, что для UTC, UTC+3, UTC+4, UTC+5, UTC+7, UTC+8, UTC+9, UTC+10 всё замечательно работает. Проблема с UTC+1, UTC+2.
LIME
Отправлено: 01 Июня, 2015 - 00:01:18
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
А ну да
Чет не то
Sail
Отправлено: 01 Июня, 2015 - 11:39:02
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
varlog, всё логично, ведь "Следует помнить, что время по UTC не переводится ни зимой, ни летом."
Сравните время в "UTC" и "GMT" для приведённого ts и, например $timestamp = 1420131600;
varlog
Отправлено: 01 Июня, 2015 - 13:38:08
Новичок
Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2015
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.