我正在制作一个小推特克隆只是为了学习,我遇到了一个问题,在允许用户选择他们所在的时区之前和之后,他们发布推文的时间显示某些事情是错误的。
以下是我的代码片段:
/* current date/time whenever they send a tweet */
$time = date('Y-m-d H:i:s');
/* Insert into db as `time` */
/* Time retrieved as $value['time'] & users timezone as $_SESSION['timezone'] */
/* Convert to users timezone */
$users_timezone = new DateTimeZone($_SESSION['timezone']);
$date = new DateTime($value['time']);
$date->setTimeZone($users_timezone);
$new_date = $date->format('M j, o g:i a e');
echo $new_date;
目前洛杉矶地区的时间为上午 11:32,但转换后显示为下午 6:26
我的默认时间是柏林,当前时间为晚上 8:33,但在转换之前显示为凌晨 1 点
任何人都可以告诉我对此的任何见解吗?第一次做这个。
最佳答案
检查系统时间
请通过 ssh 运行 date
来检查服务器当前的系统时间。
我相信 php 从系统获取日期,因此如果您的系统时间不正确,那么您的 php 时间也会不正确。
检查$value['time']
您正在使用 DataTime 类中的构造方法。这是该方法的文档。
http://www.php.net/manual/en/datetime.construct.php
确保$value['time']
采用可接受的格式。轻松做到这一点的一种方法是使用 strtotime 函数。这将从 $value['time']
生成一个 unix 时间戳,并且可能满足 DateTime 类的构造方法。
关于php - 时区正确,但时间不正确 - PHP MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775639/