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