Преобразование времени по Гринвичу в местное время с использованием смещения часового пояса в php
Мне нужно отобразить дату активности пользователя в соответствии с текущим часовым поясом. Мой подход -
- Получение смещения часового пояса из javascript и сохранение его в таблице профиля пользователя.
- Когда пользователь вошел в систему, получая смещение часового пояса.
- текущая дата работает нормально со смещением часового пояса
$ offsetDiff = $ _SESSION ['TimeZone'] * 60;
$ UserDateTime = time () + $ offsetDiff;
$ currentDate = date ('Ym-d',$UserDateTime);
- Dateo другой сегодня не работает должным образом -
$ offsetDiff = $ _SESSION ['TimeZone'] * 60;
$ UserDateTime = '2014-02-10 08:58:00'; + $ offsetDiff;
$ monthUser = date ('Ym-d',$UserDateTime);
Кто-нибудь, пожалуйста, дайте мне знать, как я могу показать правильную дату в соответствии со смещением часового пояса?
1 ответ
Вы можете преобразовать конкретное смещение в DateTimeZone:
$offset = '-0500';
$isDST = 1; // Daylight Saving 1 - on, 0 - off
$timezoneName = timezone_name_from_abbr('', intval($offset, 10) * 36, $isDST);
$timezone = new DateTimeZone($timezoneName);
Затем вы можете использовать его в конструкторе DateTime, например
$datetime = new DateTime('2012-04-21 01:13:30', $timezone);
или с сеттером:
$datetime->setTimezone($timezone);
В последнем случае, если $datetime был создан с другим часовым поясом, дата / время будут преобразованы в указанный часовой пояс.