Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Time mismatch between date() and time()

Tags:

date

php

time

mysql

I want to insert user entry log in a database table. The column where I want to keep the current date time is "date_time decimal(10,0) NOT NULL DEFAULT '0'". When inserting data I set the field as

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

My query executed successfully. But when I want to display the time of the entry it shows the time which is not match my pc(local server) time. To display the time I write

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

I test several times but it showing the time which is 4 hours less than the exact time. On my test the current time is 2013-09-15 04:46:34 PM but table row shows 2013-09-15 12:46:34 PM.

Please help me. I can not find out the mistake.

like image 892
Nantu Avatar asked Dec 26 '22 20:12

Nantu


2 Answers

You need to specify the timezone. The time() function will just retern a timestamp which is timezone-independent.

When you use the date() function you are using the server's timezone, I would recommend using the DateTime object:

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

Here is a list of supported timezones http://php.net/manual/en/timezones.php

like image 73
luttkens Avatar answered Dec 28 '22 10:12

luttkens


Sorry. It was my mistake. When inserting data I set the time zone as

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

But when display the data I forgot to set the time zone. It working fine when I set the time zone as I defined before in my display page. Thanks everybody for your help.

like image 45
Nantu Avatar answered Dec 28 '22 11:12

Nantu