use DateTime; use DateTime::Format::Strptime 'strptime'; use feature 'say'; my $input = 'March 7 2009 7:30pm EST'; $input =~ s{EST}{America/New_York}; say strptime('%b %d %Y %I:%M%p %O', $input) ->add(hours => 12) ->set_time_zone('America/Edmonton') ->format_cldr('MMMM d yyyy h:mma zzz');