Отображать MySQL datetime в пользовательском часовом поясе

#php #mysql #node.js #timezone

#php #mysql #node.js #Часовой пояс

Вопрос:

Даты и времени MySQL, созданные с помощью now() , сохраняются как UTC.

Часовой пояс на стороне клиента определяется с помощью JavaScript и возвращается как "Europe/London" .

Каков наилучший способ выбрать дату и время из MySQL и отобразить созданное время по местному времени пользователя?

PHP и Node используются с MySQL.

Ответ №1:

Вы можете использовать функцию MySQL CONVERT_TZ

 SELECT CONVERT_TZ(NOW(), 'UTC', 'Europe/London')
  

Ответ №2:

Я не знаю, как устроена ваша логика, но я использую это в PHP:

 function utc_to_timezone($format, $date, $to_timezone)
{
    $date = new DateTime($date);
    $date->setTimezone(new DateTimeZone($to_timezone));

    return $date->format($format);
}
  

Пример:

 echo utc_to_timezone('Y-m-d H:i:s', '2014-07-04 15:34:23', 'Europe/London');