Here's a solution using DateTime
use strict; use warnings; use DateTime; my $date_str="2012-02-06 13:50:09"; my ($year,$month,$day,$hour,$min,$sec); if($date_str=~/^(\d{4})\-(\d{2})\-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/) { $year=$1; $month=$2; $day=$3; $hour=$4; $min=$5; $sec=$6; } else { die "Couldn't parse timestamp $date_str\n"; } my $dt=DateTime->new( year=>$year, month=>$month, day=>$day, hour=>$hour, minute=>$min, second=>$sec, time_zone=>"UTC" ); my $now=DateTime->now; $now->set_time_zone("UTC"); my $difference=$now->delta_ms($dt); print "The difference is " . (60*($difference->minutes) + ($difference->seconds)) . " seconds\n";
Output:
The difference is 2078 seconds
which sounds right.
user554546
source share