PHP()和time()之间的时间不匹配

时间:2013-09-15 11:08:35

标签: php mysql date time

我想在数据库表中插入用户条目日志。我想保留当前日期时间的列是“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。

请帮帮我。我找不到错误。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

试试这个

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

<强> Manual