Вопрос 1)
Предполагая, что у пользователя есть параметр часового пояса, сохраненный как «Америка / Новый_York» в моем приложении, я бы просто использовал его на странице, где мне нужно показать правильное время с учетом смещения часового пояса и использования летнего времени
<?php $time_zone = 'America/New_York'; date_default_timezone_set($time_zone); echo date('D,F j, Y, h:i:s A'); ?>
ИЛИ я должен использовать что-то более похожее на этот подход. Когда я запрашиваю свои данные, я использую следующий скрипт PHP
<?PHP while($row = mysql_fetch_array($registration)){ $dt_obj = new DateTime($row['message_sent_timestamp']." UTC"); $dt_obj->setTimezone(new DateTimeZone('America/New_York')); echo $formatted_date_long=date_format($dt_obj, 'Ymd H:i:s'); } ?>
Я предпочитаю явно форматировать даты в соответствии с предпочтениями пользователя на выходе, а не устанавливать часовой пояс по умолчанию для всего исполняемого скрипта. Это упрощает работу с датами, например, по UTC по умолчанию, для таких действий, как сохранение данных или вычисление прошедших времен.
Вы можете легко написать функцию / метод форматирования даты, который учитывает часовой пояс пользователя. Обычно я загружаю часовой пояс пользователя один раз, а затем на каждый последующий вызов форматирования даты, доступ к тайм-часу в кеше. Этот быстрый метод не позволяет мне непреднамеренно использовать или сохранять данные в неправильном формате часового пояса.