use Time::Local; $start = '2013-10-28T18:59:52.863Z'; @parts = $start =~ /^(.{4})-(.{2})-(.{2})T(.{2}):(.{2}):(.{2})\.(.{3})Z$/; $start_secs = pop(@parts) / 1000; $start_secs += timegm reverse @parts; print "start_secs : $start_secs\n"; $end=timegm(gmtime()); print "end_secs : $end_secs\n"; $diff = $end_secs - $start_secs; print "$diff";