I'm trying to troubleshoot and solve this problem: the server I'm working on (php 5.2.9 on Linux), has the correct local time (America/Buenos_Aires):
user@server [/home/site/public_html]$ date
Mon Nov 1 17:11:14 ART 2010
php.ini
is set with date.timezone = "America/Buenos_Aires"
I also tried to set the timezone directly in the script with
<?php
ini_set('display_errors', true);
error_reporting(E_ALL|E_STRICT|E_NOTICE);
//date_default_timezone_set("America/Buenos_Aires");
//echo date_default_timezone_get(), "<br>";
echo "ini: ", ini_get('date.timezone'), "<br>";
$now = date("H:i:s T I");
$nowdate = date("Y-m-d");
echo $nowdate." ".$now;
?>
but to no avail, the result is
ini: America/Buenos_Aires
2010-11-01 18:11:14 ARST 1
when it should read 17:11
(It's consistently one hour ahead). All I've found here and on the web pointed to
- date_default_timezone_set (which I tried)
- setting date.timezone in php.ini (which it is set)
- confusing server time with client time (which I'm not).
Any ideas?
EDIT: As suggested, I checked and as you can see in the code, PHP thinks it should be applying DST, and Argentina decided to not apply it this year. Any option besides waiting for a patch?
EDIT 2: I tried dumping the timezones transition as suggested. I got the following:
The timezone America/Buenos_Aires switches to standard time on 20 Mar 2011 @ 02:00.
The new GMT offset will be: -10800 (ART)