Помощь Изменение существующих значений даты и времени MySQL с центрального времени на время UTC? - PullRequest
0 голосов
/ 22 мая 2019

Базе данных около четырех лет, поэтому локальные значения даты и времени (для трех разных переменных) представлены как в летнее время, так и в стандартное время, в зависимости от того, когда происходит переключение.Как мне перевести все значения даты и времени (2019-05-21 21:31:45) из CST / CDT в UTC, учитывая даты, которые были изменены с -6 часов до -5 часов?Последующий вопрос заключается в том, как убедиться, что пользователь видит только свое местное время?

Я смотрел;

Update `NetLog-test` SET logdate = DateADD(hour, +6, logdate );

Но мне кажется, это изменит ВСЕ значения logdateбез учета того, когда CDT изменился на CST.В моем PHP-файле я делал то, что вы видите ниже, чтобы контролировать то, что пользователь видел и с чем работал.Я просто изменил значение CONST_SERVER_TIMEZONE с EDT на CDT в соответствующий день.Не очень хороший выбор, который я сейчас понимаю.

define('CONST_USER_TIMEZONE', 'America/Chicago');
    /* server timezone */
    define('CONST_SERVER_TIMEZONE', 'EDT'); /* CDT for standard time, EDT for daylight  */ 

    /* server dateformat */
    define('CONST_SERVER_DATEFORMAT', 'Y-m-d H:i:s');


function now($str_user_timezone = CONST_USER_TIMEZONE,
           $str_server_timezone = CONST_SERVER_TIMEZONE,
         $str_server_dateformat = CONST_SERVER_DATEFORMAT) {

  // set timezone to user timezone
  date_default_timezone_set($str_user_timezone);

  $date = new DateTime('now');
  $date->setTimezone(new DateTimeZone($str_server_timezone));
  $str_server_now = $date->format($str_server_dateformat);

  // return timezone to server default
  date_default_timezone_set($str_server_timezone);

  return $str_server_now;
}

$open  = now(CONST_USER_TIMEZONE,CONST_SERVER_TIMEZONE,CONST_SERVER_DATEFORMAT);
...