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
*)