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 72d7000151)
mr7.5.6
Guillem Jover 6 years ago committed by Rene Krenn
parent d871527ed3
commit 0781a190b7

@ -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 {

@ -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');

Loading…
Cancel
Save