I am converting dates and times into timestamps using PHP before they are inserted into my MySQL database.
My problem is that when i use PHP's strtotime function the output timestamp is -1 hour behind my actual time.
For example, considering todays date: 07/21/2010. When i use php code like:
<?php
$my_timestamp = strtotime("07/21/2010");
echo $my_timestamp;
?>
The timestamp sent back is the GMT equivilent MINUS 1 hour. i.e. i get back: 20 Jul 2010 23:00:00 GMT instead of 21 Jul 2010 00:00:00 GMT.
I live in the UK so my timezone is GMT. I have declared my timezone in the script using date_default_timezone_set('Europe/London') and i have also ensured that the php.ini file is set to 'Europe/London'.
Is this something to do with daylight savings time perhaps? How can i fix the problem without adding 1 hour to all my dates?
Europe/London time is not GMT time during Daylight Savings. You need to set it to UTC.
date_default_timezone_set('UTC');
date_default_timezone_set('GMT');
may work, but, as Kenneth notes in a comment below, it is deprecated.