0

我正在制作一个小推特克隆只是为了学习,我遇到了一个问题,在允许用户选择他们所在的时区之前之后,显示他们何时发布某件事的时间是错误的。

以下是我的代码片段:

/* 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 点

谁能给我任何见解?第一次这样做。

4

1 回答 1

0

检查系统时间

date请通过 ssh运行检查您服务器的当前系统时间。

我相信 php 从系统中获取日期,因此如果您的系统时间不正确,那么您的 php 时间也将不正确。

查看$value['time']

您正在使用 DataTime 类中的构造方法。这是该方法的文档。

http://www.php.net/manual/en/datetime.construct.php

确保$value['time']采用可接受的格式。轻松做到这一点的方法是使用该strtotime功能。这将生成一个 unix 时间戳,$value['time']并且可能会满足 DateTime 类的构造方法。

于 2013-07-21T20:07:29.453 回答