use strict; use warnings; # to avoid purgatory use HTTP::Date qw(str2time); use Time::Local qw(timelocal timegm); my $difference_to_utc_in_minutes=(timegm(localtime)-timelocal(localtime))/60; my $diff_hours=abs($difference_to_utp_in_minutes)/60; my $diff_mins=abs($difference_to_utp_in_minutes)%60; my $difference_to_utc= ($difference_to_utc_in_minutes >= 0 ? '+' : '-'). sprintf("%02d",$diff_hours). sprintf("%02d",$diff_mins) ; my $timestamp_local="20110905 142631"; my $seconds_since_epoch=str2time($timestamp_local, $difference_to_utc); print "$seconds_since_epoch\n".gmtime($seconds_since_epoch)."\n";