danielb
danielb

Reputation: 878

PHP and timezone

I am using strtotime() to get a timestamp from a date and time string. I will be running strtotime() during the summer (daylight savings) to give me a timestamp of a winter date (non-daylight savings).

In the winter, I will need to convert my timestamp to a readable date using date() -- will it be the same date/time I put into strtotime() during the summer?

On each one of my pages, I am setting my timezone by date_default_timezone_set with my city.

So, running this during the summer (daylight savings):

date_default_timezone_set('America/Los_Angeles');
echo strtotime("Dec 1 2014 8:00 am");

Gives me a certain timestamp 1417449600.

Will running this during the winter (non-daylight savings) return 8:00am as I need it to do?

date_default_timezone_set('America/Los_Angeles');
echo date("g:ia",1417449600);

Upvotes: 1

Views: 69

Answers (2)

deceze
deceze

Reputation: 522577

Yes. A UNIX timestamp such as 1417449600 represents a completely, globally, universally unique point in time, independent of fussy timezone notation. There's only one "December 1st 2014 8 am in Los Angeles", which is the same point in time as "December 1st 2014 17:00 CET" and a number of other local notations across the world. The UNIX timestamp 1417449600 expresses that point in time, regardless of whatever your wall clock says exactly.

When you format this unique point in time back to a more human readable format using date(), it figures out what exactly the time must be formatted at based on the set timezone. It won't change based on what the time or DST settings are now.

Upvotes: 0

Barmar
Barmar

Reputation: 782499

Yes. If the timezone you set is doesn't explicitly say whether it's standard or daylight-savings time, it automatically determines the state of DST from the time that you give it and the rules for when the timezone switches into and out of DST.

Upvotes: 1

Related Questions