How to convert seconds into weeks, days, hours, minutes, and seconds in Pascal

1 Answer

0 votes
program ConvertSecondsDemo;

{
Use integer division and modulo:

1 minute = 60 seconds
1 hour   = 60 minutes
1 day    = 24 hours
1 week   = 7 days
}

{
    Convert a total number of seconds into weeks, days, hours,
    minutes, and seconds. The procedure receives the total seconds
    and outputs each component by reference (var parameters).
}
procedure convertSeconds(totalSeconds: Int64;
                         var weeks: Int64;
                         var days: Int64;
                         var hours: Int64;
                         var minutes: Int64;
                         var seconds: Int64);
const
    SECS_PER_MIN  = 60;
    SECS_PER_HOUR = 60 * SECS_PER_MIN;
    SECS_PER_DAY  = 24 * SECS_PER_HOUR;
    SECS_PER_WEEK = 7  * SECS_PER_DAY;
begin
    // Compute each unit using integer division and modulo
    weeks := totalSeconds div SECS_PER_WEEK;
    totalSeconds := totalSeconds mod SECS_PER_WEEK;

    days := totalSeconds div SECS_PER_DAY;
    totalSeconds := totalSeconds mod SECS_PER_DAY;

    hours := totalSeconds div SECS_PER_HOUR;
    totalSeconds := totalSeconds mod SECS_PER_HOUR;

    minutes := totalSeconds div SECS_PER_MIN;
    seconds := totalSeconds mod SECS_PER_MIN;
end;

var
    seconds: Int64;
    w, d, h, m, s: Int64;
begin
    seconds := 1000000;

    convertSeconds(seconds, w, d, h, m, s);

    WriteLn(w, ' weeks, ',
            d, ' days, ',
            h, ' hours, ',
            m, ' minutes, ',
            s, ' seconds');
end.



(*
run:
 
1 weeks, 4 days, 13 hours, 46 minutes, 40 seconds
 
*)

 



answered 12 hours ago by avibootz

Related questions

...