Игнорировать BST с помощью функции php strtotime()

Есть ли способ сказать функции strtotime() не изменять время, которое я даю в BST? то есть если сделать

date('g.ia', strtotime("2014-06-25T19:30"))

Я хочу получить 19:30, как если бы я вошел

date('g.ia', strtotime("2014-06-25T19:30"))

(Первый в настоящее время возвращается в 18:30)

Я знаю, что могу просто написать ручную проверку дня/месяца и добавить час, если это необходимо, или просто самостоятельно проанализировать время из строки, но оба решения звучат немного запутанно (мне придется сделать это довольно быстро). несколько мест).

Извините, если есть что-то очевидное, что мне не хватает, новичок в php


person Gareth Johnson    schedule 28.01.2014    source источник


Ответы (1)


Функция date() отформатирует время в соответствии с настройками вашего часового пояса. Сказал, что ваш пример не имеет смысла, поскольку strtotime() будет использовать текущую настройку часового пояса для преобразования входных данных в временную метку unix, а затем функция date() снова будет использовать эту настройку часового пояса для обратного форматирования временной метки. Вы должны изменить настройку часового пояса между вызовами функций strtotime() и date(), как в этой демонстрации.

Вы можете просто использовать расширение DateTime, где вы неявно указываете, в каком часовом поясе ваше время:

$dt = new DateTime('2014-06-25T19:30', new DateTimezone('Europe/London'));
echo $dt->format('g.ia');
person Glavić    schedule 28.01.2014