该数据库已有大约四年的历史,因此本地日期时间值(针对三个不同的变量)在夏令时和标准时间中均取决于切换发生的时间。 考虑到将日期从-6小时更改为-5小时,我如何将所有日期时间值(2019-05-21 21:31:45)从CST / CDT转换为UTC?后续问题将是如何确保用户仅看到他的本地时间?
我看着;
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);