我有一个CodeIgniter应用程序,config.php文件中的时区设置在gmt。
$config['time_reference'] = 'gmt';我注意到两件事:
记住,我不会在任何模型中显式地传递时间引用。我将表设置为在插入记录时自动插入时间戳。
发布于 2014-04-01 12:15:44
在事件表单中,您应该向服务器发送一个隐藏的输入,它将包含客户端的时区偏移量。您可以通过Javascript的Date.getTimezoneOffset()方法获得它(它使您在UTC和用户的本地时间之间以分钟为单位进行抵消)。
如果不能这样做,可以将用户的本地时区保存到db中,或者以事件形式询问它。
然后,在插入或更新查询中,可以使用DATE_ADD('2012-12-13 19:41:00“,用户偏移量分钟)来转换时间戳。您也可以在php或客户端提交表单.
例如,在PHP中:
strtotime($event_date);给出日期的Unix时间戳(以秒为单位)。要将其转换为另一个时区,可以使用javascript方法在几分钟内得到偏移量,您可以这样做:
$dbTimestamp = strtotime($event_date) + $_POST['offsetInMinutes']/60;如果在此表单中获得偏移量:“+2:00”或“-6:00”,则可以使用正则表达式在数小时内得到偏移:
preg_match('/(.*)\:00/', '+2:00', $match)将“+2”设置为$match1
另一个:
首先,将主时间引用设置为配置文件中的“GMT”:
$config['time_reference'] = 'gmt';从helper.html中的时区引用中选择,或者使用timezone_menu()在下面的代码中设置变量或更新$timezone的DB列:
$time = now();
$timezone = 'UM5';
$daylight_saving = TRUE; // or FALSE
$local_time = unix_to_human(gmt_to_local($time, $timezone, $daylight_saving));
echo $local_time;https://stackoverflow.com/questions/22785414
复制相似问题