Вот сценарий - у меня есть часовой пояс по умолчанию в PHP, установленный в UTC. Все, кроме одной даты/времени, с которыми я работаю, устанавливаются в текущее время UTC; когда он отображается позже, я устанавливаю часовой пояс для этого конкретного пользователя, и дата появляется в их часовом поясе. Прекрасно работает.Изменение временной зоны без изменения значения объекта DateTime
Кроме того, у меня есть одна дата/время, которое пользователь может ввести в форму. Он появляется в виде «ГГГГ-ММ-ДД ЧЧ: ММ» в течение 24 часов (пример: «2014-09-18 17:00»). Пользователь, естественно, устанавливает это время в своем часовом поясе, а не в UTC.
Если я создаю новый объект DateTime с входным значением, он сохраняет в формате UTC, поэтому при отображении позже он отключается на несколько часов (в зависимости от исходного часового пояса). Если я устанавливаю часовой пояс для нового объекта, он изменяет значение, считая, опять же, что входное значение было UTC.
Я сделал некоторый Googling, но ничего не нашел в отношении PHP (существует несколько ответов для C#, которые я нашел). Возможно ли это с объектом DateTime (или с Carbon)? Я застрял с выполнением ручного добавления/вычитания часов на основе текущего часового пояса пользователей, чтобы поместить его в UTC первым?
Как-то я полностью пропустил эту опцию в конструктор DateTime. Благодаря! –