Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Date function in PHP gives always date one day behind

My situation is that get always the dates one day behind. For example, I have this value -243219600 which is relative to date 18/04/1962

After a

date('d/m/Y', -243219600);

Output is :

17/04/1962

-243219600 seconds from January 1 1970 00:00:00 UTC in javascript is here you get correct Date.

like image 457
Alaeddine Avatar asked Mar 24 '26 05:03

Alaeddine


2 Answers

The output of date() depends on the configured time zone. If you add the time and timezone, you can see it. In my case it is CET:

echo date('d/m/Y H:m:i T', -243219600);
//prints: 18/04/1962 00:04:00 CET

Solution with date()

If you want date() to use UTC, use date_default_timezone_set:

date_default_timezone_set('UTC');
echo date('d/m/Y H:m:i T', -243219600);"

Output

 17/04/1962 23:04:00 UTC

(you see, since it is one hour before midnight in UTC, the date depends on the timezone)

Solution with DateTime:

The DateTime class uses always UTC if it is constructed by a Unix timestamp:

From the documentation:

Note:

The $timezone parameter and the current timezone are ignored when the $time parameter either is a UNIX timestamp (e.g. @946684800) or specifies a timezone (e.g. 2010-01-28T15:00:00+02:00).

So you can use the following code as well:

echo (new DateTime('@-243219600'))->format('d/m/Y');
like image 65
Fabian Schmengler Avatar answered Mar 26 '26 18:03

Fabian Schmengler


Check the timezone of your PHP, set it so it's the same as your computer (since your using javascript).

like image 29
Wizzard Avatar answered Mar 26 '26 17:03

Wizzard



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!