To whom might interest:
New York rule:
my $rules = [
bless( {
'at' => '2:00',
'from' => '1987',
'in' => 'Apr',
'letter' => 'D',
'name' => 'US',
'offset_from_std' => 3600,
'on' => 'Sun>=1',
'save' => '1:00',
'to' => 'max',
'type' => undef
}, 'DateTime::TimeZone::OlsonDB::Rule' ),
bless( {
'at' => '2:00',
'from' => '1967',
'in' => 'Oct',
'letter' => 'S',
'name' => 'US',
'offset_from_std' => 0,
'on' => 'lastSun',
'save' => '0',
'to' => 'max',
'type' => undef
}, 'DateTime::TimeZone::OlsonDB::Rule' )
]
;
New York is in the Eastern Time Zone in the United States of America (USA).
Eastern Standard Time (EST) is 5 hours behind Greenwich Mean Time (GMT-5).
Daylight Saving Time begins for most of the United States at 2 a.m. on the
first Sunday of April. Time reverts to standard time at 2 a.m. on the last
Sunday of October.
Example: in 2000 CE, DST started at 2 AM (local) the 2nd April. This date, at 2
AM
does not exists - only from 3 AM forward. Since the Time Zone is GMT-5, with
the advanced hour, the difference equals -4 hours. So, If it's 3 AM in NY,
it's 7 AM GMT.
Sunday, in 29 October of the same year, at 2 AM (local) the clock changes to 1
AM ( if
we calculate for 1 AM we get 4 hours of difference; calculating for 2 AM, we
get the 5 ).
Europe:
Start: Last Sunday in March
End: Last Sunday in October
Time: 1.00 am (01:00) Greenwich Mean Time (GMT)
Example:
> my $rules = [
> bless( {
> 'at' => '1:00u',
> 'from' => '1996',
> 'in' => 'Oct',
> 'letter' => '',
> 'name' => 'EU',
> 'offset_from_std' => 0,
> 'on' => 'lastSun',
> 'save' => '0',
> 'to' => 'max',
> 'type' => undef
> }, 'DateTime::TimeZone::OlsonDB::Rule' ),
> bless( {
> 'at' => '1:00u',
> 'from' => '1981',
> 'in' => 'Mar',
> 'letter' => 'S',
> 'name' => 'EU',
> 'offset_from_std' => 3600,
> 'on' => 'lastSun',
> 'save' => '1:00',
> 'to' => 'max',
> 'type' => undef
> }, 'DateTime::TimeZone::OlsonDB::Rule' )
> ]
> ;
Continental Portugal > UTC+1 from the last Sunday in March at 01:00 to the
last Sunday in October at 02:00 Europe/Lisbon
Year DST:
2000
Begin: March 26, 1 am GMT
End: October 29, 1 am GMT
So, in Portugal the 26 March , the 1h local ( = 1 am GMT ) does not exist -
only from 2 forward (GMT+1);
In October 29, the change is at 1 GMT = 2h local, that passes to 1h (GMT0).
The reason for my confusion: in the New York case, the "at" field, that defines
the hour where the change starts ( or ends ) is local; in Lisbon is in GMT time
- the "u" stands for that.
My confusion came from there. So everything's right.
Kind regards,
Rui Miguel Fernandes
Porto - Portugal