我正在尝试从mySQL数据库中使用PHP获取本地时间的时间戳,但是却遇到错误,我使用的原始代码是这样,显然返回了UTC时间:
$timestamp = strtotime($row['created']);
$dt = date('d/m/Y H:i', $timestamp);
现在搜索以前的答案,我已经找到了以下代码:
$date = /* SELECT date FROM database */;
$usersTimezone = new DateTimeZone('America/Vancouver');
$l10nDate = new DateTime($date);
$l10nDate->setTimeZone($usersTimezone);
echo $l10nDate->format('Y-m-d H:i:s');
但是我无法使其工作...我尝试添加date_default_timezone_set('America / Vancouver');也是,但是它都没有用...而且我只做了最小的更改,因为我想将其保存在变量中而不回显它。 另外,在先前的答案中查看该信息,我也不知道是否可以转换任何UTC时间戳,或者我必须在以前的时区中插入记录才能稍后将其转换回去。
感谢您的时间。
答案 0 :(得分:1)
默认情况下,DateTime::construct
使用您的本地时区。但是您的时间是UTC时间,因此您需要告诉构造函数,然后然后修改时区:
$date = '2018-10-13 00:00:00';
$l10nDate = new DateTime($date, new DateTimeZone('UTC'));
$l10nDate->setTimeZone(new DateTimeZone('America/Vancouver'));
echo $l10nDate->format('Y-m-d H:i:s');
输出
2018-10-12 17:00:00