DateTime::now() does not appear to be accurate for me. I used to methods to
prove this. The first method is creating a DateTime object using information
provided by localtime(). The second is using the DateTime::now() method. The
localtime method provides what I expected, the DateTime::now() method has an
incorrect hour for me.
Run at the same time (roughly within seconds at least), I get this result
when using the localtime approach:
my @now = localtime (time);
my $dt_now = DateTime->new ( year => $now[5]+1900, month => $now[4]+1, day
=> $now[3], hour => $now[2], minute => $now[1] );
%dt_now = bless( (
'local_rd_secs' => 29820,
'local_rd_days' => 732819,
'rd_nanosecs' => 0,
'locale' => bless( {
'default_time_format_length' =>
'medium',
'native_territory' => 'United
States',
'native_language' => 'English',
'native_complete_name' => 'English
United States',
'en_language' => 'English',
'id' => 'en_US',
'default_date_format_length' =>
'medium',
'en_complete_name' => 'English
United States',
'en_territory' => 'United States'
}, 'DateTime::Locale::en_US' ),
'local_c' => {
'hour' => 8,
'second' => 0,
'month' => 5,
'quarter' => 2,
'day_of_year' => 143,
'day_of_quarter' => 53,
'minute' => 17,
'day' => 23,
'day_of_week' => 3,
'year' => 2007
},
'utc_rd_secs' => 29820,
'formatter' => undef,
'tz' => bless( {
'name' => 'floating',
'offset' => 0
}, 'DateTime::TimeZone::Floating' ),
'utc_year' => 2008,
'utc_rd_days' => 732819,
'offset_modifier' => 0
), 'DateTime' );
Here is what I get when I use DateTime::now():
%dt_now = bless( (
'local_rd_secs' => 44142,
'local_rd_days' => 732819,
'rd_nanosecs' => 0,
'locale' => bless( {
'default_time_format_length' =>
'medium',
'native_territory' => 'United
States',
'native_language' => 'English',
'native_complete_name' => 'English
United States',
'en_language' => 'English',
'id' => 'en_US',
'default_date_format_length' =>
'medium',
'en_complete_name' => 'English
United States',
'en_territory' => 'United States'
}, 'DateTime::Locale::en_US' ),
'local_c' => {
'hour' => 12,
'second' => 42,
'month' => 5,
'quarter' => 2,
'day_of_year' => 143,
'day_of_quarter' => 53,
'minute' => 15,
'day' => 23,
'day_of_week' => 3,
'year' => 2007
},
'utc_rd_secs' => 44142,
'formatter' => undef,
'tz' => bless( {
'name' => 'UTC'
}, 'DateTime::TimeZone::UTC' ),
'utc_year' => 2008,
'utc_rd_days' => 732819,
'offset_modifier' => 0
), 'DateTime' );
Shouldn't the 2 be identical? The localtime method is accurate for me (it is
roughly 8am right now here). The DateTime::now() method has the hour as 12.
Some miscellaneous information:
1. Running Perl 5.8.5
2. DateTime.pm version 0.2901
3. Centos w/ kernel 2.6.9.