From 0781a190b7dbfed1fa3e29226232d8486abb5e80 Mon Sep 17 00:00:00 2001 From: Guillem Jover Date: Thu, 17 Oct 2019 16:27:14 +0200 Subject: [PATCH] TT#69200 Use Time::Seconds instead of ad-hoc code to pretty print time offsets This is a core module, which requires no additional dependencies. Change-Id: I93a2c3fd75fd7790461ccc694ed73c4899a1ef20 (cherry picked from commit 72d7000151e20d78eb04c433df2d5731bf04b554) --- lib/NGCP/BulkProcessor/Utils.pm | 65 +-------------------------------- t/Utils.t | 11 +++++- 2 files changed, 12 insertions(+), 64 deletions(-) diff --git a/lib/NGCP/BulkProcessor/Utils.pm b/lib/NGCP/BulkProcessor/Utils.pm index c63b823..1bc79b6 100644 --- a/lib/NGCP/BulkProcessor/Utils.pm +++ b/lib/NGCP/BulkProcessor/Utils.pm @@ -24,6 +24,7 @@ use Net::Domain qw(hostname hostfqdn hostdomain); use Cwd qw(abs_path); #use File::Basename qw(fileparse); +use Time::Seconds; use Date::Manip qw(Date_Init ParseDate UnixDate); #Date_Init('Language=English','DateFormat=non-US'); Date_Init('DateFormat=US'); @@ -746,69 +747,7 @@ sub secs_to_years { my $time_in_secs = shift; - my $negative = 0; - if ($time_in_secs < 0) { - $time_in_secs *= -1; - $negative = 1; - } - - my $years = 0; - my $months = 0; - my $days = 0; - my $hours = 0; - my $mins = 0; - my $secs = $time_in_secs; - - if ($secs >= 60) { - $mins = int($secs / 60); - $secs = ($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60-$mins*60); - if ($mins >= 60) { - $hours = int($mins / 60); - $mins = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60) / (60)); - $secs = ($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60-$mins*60); - if ($hours >= 24) { - $days = int($hours / 24); - $hours = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24) / (60*60)); - $mins = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60) / (60)); - $secs = ($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60-$mins*60); - if ($days >= 30) { - $months = int($days / 30); - $days = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30) / (60*60*24)); - $hours = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24) / (60*60)); - $mins = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60) / (60)); - $secs = ($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60-$mins*60); - if ($months >= 12) { - $years = int($months / 12); - $months = int(($time_in_secs-$years*60*60*24*30*12) / (60*60*24*30)); - $days = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30) / (60*60*24)); - $hours = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24) / (60*60)); - $mins = int(($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60) / (60)); - $secs = ($time_in_secs-$years*60*60*24*30*12-$months*60*60*24*30-$days*60*60*24-$hours*60*60-$mins*60); - } - } - } - } - } - - $secs = zerofill(int($secs),2); - $mins = zerofill($mins,2); - $hours = zerofill($hours,2); - - if ($years == 0 && $months == 0 && $days == 0) { - $time_in_secs = $hours . ':' . $mins . ':' . $secs; - } elsif($years == 0 && $months == 0) { - $time_in_secs = $days . ' day(s) - ' . $hours . ':' . $mins . ':' . $secs; - } elsif($years == 0) { - $time_in_secs = $months . ' month(s)/' . $days . ' day(s) - ' . $hours . ':' . $mins . ':' . $secs; - } else { - $time_in_secs = $years . ' year(s)/' . $months . ' month(s)/' . $days . ' day(s) - ' . $hours . ':' . $mins . ':' . $secs; - } - - if ($negative == 1) { - return '- ' . $time_in_secs; - } else { - return $time_in_secs; - } + return Time::Seconds->new($time_in_secs)->pretty; } sub to_duration_string { diff --git a/t/Utils.t b/t/Utils.t index d184942..b7d796b 100644 --- a/t/Utils.t +++ b/t/Utils.t @@ -16,15 +16,24 @@ use strict; use warnings; -use Test::More tests => 4; +use Test::More tests => 10; require_ok('NGCP::BulkProcessor::Utils'); NGCP::BulkProcessor::Utils->import(qw( zerofill + secs_to_years )); # zerofill() is(zerofill(0, 4), '0000'); is(zerofill(25, 4), '0025'); is(zerofill(1000, 4), '1000'); + +# secs_to_years() +is(secs_to_years(1), '1 second'); +is(secs_to_years(59), '59 seconds'); +is(secs_to_years(3661), '1 hour, 1 minute, 1 second'); +is(secs_to_years(7322), '2 hours, 2 minutes, 2 seconds'); +is(secs_to_years(86461), '1 day, 0 hours, 1 minute, 1 second'); +is(secs_to_years(691261), '8 days, 0 hours, 1 minute, 1 second');