php - 时区正确,但时间不正确 - PHP MySQL

标签 php mysql date datetime timezone

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

以下是我的代码片段:

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

相关文章:

java - 如何从 Java 中的日历对象构建日、月、年列表?

php - 插入批处理 codeigniter 中的非法字符串偏移

php - 什么是参数化查询?

php - 忘记密码成功连接到邮箱

PHP/Sql - 尝试根据特定条件获取行的最大 id

php - CONCAT日期问题

php - 将用户从文件输入中选择的文件路径存储为 session 变量,以便稍后重新填充该字段

php - 使用自定义列名称内连接另一个表中的两列

mysql - 如何将字符串拆分为 4 个字符的子字符串,然后用连字符连接它们?

javascript - 从日期字符串中获取时间