我有一些日期存储在一个mysql数据库的gmt中
假设客户时区偏移为-540;我如何更正来自数据库的datetime
来反映这一点?是否有一个方便的功能我可以把日期通过,或者我需要相应地添加或减去。
答案 0 :(得分:4)
也许这个片段会帮助你:
$format = 'Y-m-d';
$obj = new DateTime();
$date = date($format, strtotime($obj->format('Y-m-d H:i:s')) - $obj->format('Z'));
答案 1 :(得分:3)
由于您拥有GMT格式的数据项,因此您必须使用strtotime
将其转换为时间戳,此处有更多信息:http://php.net/manual/en/function.strtotime.php
获得时间戳后,可以从中减去偏移量(540倍60秒),然后使用date
将结果转换为新的日期字符串,更多信息请参见:http://php.net/manual/en/function.date.php
以下是可以执行此操作的代码的一个版本:
$dbValue = $row['date'];
$timestamp = strtotime($dbValue) - (540*60);
$result = date("Y-m-d H:i:s", $timestamp);