[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]
{===========================================================================
Date: 10-04-93 (12:39)
From: ANDREW KEY
Subj: What is NEXT day ??
---------------------------------------------------------------------------
AC> My assignment is to write a program, given three integers whose values
AC> represent a day between January 1, 1900 and December 30, 1999, will
AC> output the value representing the day following.
AC> I am running into problems with three things. The end of a month, the
AC> end of a year, and leap years.
Here's a procedure you might get some ideas from... }
procedure NextDay(var MM,DD,YYYY: integer);
const
DaysInMonth: array[0..1,1..12] of integer =
((31,28,31,30,31,30,31,31,30,31,30,31), {regular year}
(31,29,31,30,31,30,31,31,30,31,30,31)); {leap year}
var
Leap: integer;
begin
Inc(DD); {increment day}
if (YYYY mod 4) = 0 then {is it a leap year?}
Leap:=1 {Leap year}
else
Leap:=0; {non-leap year}
if DD>DaysInMonth[Leap,MM] then {is DD > the end of the month?}
begin
DD:=1; {set to 1st of month}
Inc(MM); {increment month by one}
if MM>12 then {is MM > December?}
begin
MM:=1; {set MM to January}
Inc(YYYY); {and increment YYYY}
end; {if MM>12}
end; {if DD>Days}
end; {proc NextDay}
[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]