use warnings; use strict; use DateTime; use DateTime::Format::Strptime; my $str = "03/13/2016 09:59:59"; my $strp = DateTime::Format::Strptime->new( pattern => '%m/%d/%Y %H:%M:%S', time_zone=>'UTC', on_error=>'croak'); my $dt = $strp->parse_datetime($str); print $dt->strftime('%Y-%m-%d %H:%M:%S %Z')," is ", $dt->clone->set_time_zone('America/Los_Angeles') ->strftime('%Y-%m-%d %H:%M:%S %Z'),"\n"; $dt->add(seconds=>1); print $dt->strftime('%Y-%m-%d %H:%M:%S %Z')," is ", $dt->clone->set_time_zone('America/Los_Angeles') ->strftime('%Y-%m-%d %H:%M:%S %Z'),"\n"; __END__ 2016-03-13 09:59:59 UTC is 2016-03-13 01:59:59 PST 2016-03-13 10:00:00 UTC is 2016-03-13 03:00:00 PDT