perl

Convert seconds to days, hours, minutes using Perl


I would like to take control of the output generated in seconds using perl. I would like to show the time (in seconds) in the form of days, hours, minutes and seconds to make it human readable format.

my $start = time;
<some other perl codes>
my $duration = time - $start;
print "Total Execution time: $duration s\n";

Output is 311052 s

Required Output is 3 days 14 hours 24 minutes 12 seconds


Solution

  • You could use the Time::Piece and Time::Seconds modules, which will do all of this for you

    In this program I have simply added pi days onto the current date and time to get a representative duration. You will, of course, use an actual time

    use strict;
    use warnings;
    
    use Time::Piece;
    use Time::Seconds qw/ ONE_DAY /;
    
    my $start = localtime;
    my $end = $start + int(355/113 * ONE_DAY);
    
    my $duration = ($end - $start)->pretty;
    print "Total Execution time: $duration\n";
    

    output

    Total Execution time: 3 days, 3 hours, 23 minutes, 53 seconds