use strict;
use warnings;
use feature qw( say );
use DateTime::Format::Strptime qw( );
my $format = DateTime::Format::Strptime->new(
pattern => '%F %T.%3N',
locale => 'en',
time_zone => 'local',
on_error => 'croak',
);
my $dt = $format->parse_datetime('2011-01-07 08:59:54.123');
$dt->set_time_zone('UTC');
say $format->format_datetime($dt); # 2011-01-07 13:59:54.123
It's not clear what you mean by 'EST'. Here are the time zones you might be interested in using:
- 'local' is the same as 'America/New_York' if your machine uses that time zone.
- 'America/New_York' will actually factor in DST, meaning it will use UTC-4 if the date is in summer and UTC-5 if the date is in winter. Note that your format is ambiguous one hour each year if this is its time zone.
- '-500' will use UTC-5 for all dates.
- 'EST' is an ambiguous alias for '-500' (as Australia also has an EST). It's probably best to avoid it.
|