4

我想在数据库表中插入用户条目日志。我要保留当前日期时间的列是“date_time decimal(10,0) NOT NULL DEFAULT '0'”。插入数据时,我将字段设置为

$this->mytable->date_time = time();

我的查询成功执行。但是当我想显示条目的时间时,它显示的时间与我的电脑(本地服务器)时间不匹配。显示我写的时间

echo date('Y-m-d h:i:s A', $log->date_time);

我测试了几次,但它显示的时间比确切时间少 4 小时。在我的测试中,当前时间是 2013-09-15 04:46:34 PM,但表格行显示 2013-09-15 12:46:34 PM。

请帮我。我找不到错误。

4

3 回答 3

5

您需要指定时区。该time()函数将仅重新生成一个与时区无关的时间戳。

当您使用date()使用服务器时区的功能时,我建议使用该DateTime对象:

$timezone = new DateTimeZone("Etc/GMT-4");
$date = new DateTime("@".$log->date_time); // @-symbol indicates timestamp input
$date->setTimezone($timezone);
echo $date->format("r");

这是支持的时区列表http://php.net/manual/en/timezones.php

于 2013-09-15T11:13:07.810 回答
3

对不起。这是我的错误。插入数据时,我将时区设置为

if(function_exists('date_default_timezone_set')) date_default_timezone_set("Asia/Dhaka");

但是当显示数据时我忘了设置时区。当我按照我之前在显示页面中定义的时区设置时,它工作正常。谢谢大家的帮助。

于 2013-09-15T11:21:01.593 回答
2

尝试这个

<?php
date_default_timezone_get();
echo time();

手动的

于 2013-09-15T11:15:10.130 回答