我想在数据库表中插入用户条目日志。我想保留当前日期时间的列是“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。
请帮帮我。我找不到错误。
答案 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)