#### Archived

This topic is now archived and is closed to further replies.

# simple date calculation

This topic is 5443 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Given a year (eg 2005) and a month (eg May) how can I calculate - the number of days in that month (accounting for leap years too) - the day that is the first of that month (eg Wednesday) ? Apologies if this has been asked 17603 times.

##### Share on other sites
Determining if the year is a leap year or not is not difficult. If the year is divisible by four, except for 00 years, unless the 00 year is divisible by 400, then the year is a leap year. What could be simpler?

Calculating the number of days in a month is easy too. Just keep a list of how many days are in each month for a normal year. If a leap year, add one to every month''s result except for January''s.

As for what day is the first day of the month, I don''t know off hand. I''ll have to think about it. There are some programs that do that (see the UNIX''s cal command).

##### Share on other sites
quote:

Calculating the number of days in a month is easy too. Just keep a list of how many days are in each month for a normal year. If a leap year, add one to every month''s result except for January''s.

what???

##### Share on other sites

program Zeller;

uses Crt;

const
start_year=1990;
end_year=2001;

{ days : array[1..7] of string= (''Sunday'', ''Monday'', ''Tuesday'', ''Wednesday'', ''Thursday'', ''Friday'', ''Saturday'');}
var
d, m, y : integer; {for cycles}

{Zeller function: returns the day of the week
for this date, month and year-
[0;6]; 0 is Saturday}

function return_day(day, month, year : integer) : byte;
var
temp, yr1, yr2 : integer;
Begin
if month<3 then
Begin
inc(month,10);
dec(year);
End
else dec(month,2);

yr1:=year div 100; yr2:=year mod 100;
temp:=(26*month-1) div 10;

return_day:=(day+temp+yr2+(yr2 div 4)+(yr1 div 4)-2*yr1+49) mod 7;
End;

Begin
ClrScr;

{ writeln(''Today is '' ,days[return_day(14,12,2001)+1]);}

writeln(''Period from '', start_year, '' to '', end_year, '':'');
for y:=start_year to end_year do
for m:=1 to 12 do
if return_day(13,m,y)=5 then
writeln(''Friday 13 was: in '', m, '' month of the '', y, '' year'', '' ('', 13, ''.'', m, ''.'', y, '').'');
End.
[\source]

##### Share on other sites
I''m sure he meant only add one day to February on leap years. If you really want to know about date calculations, here is a link:

CLICKY

Don''t even try to understand Easter. Your head will blow up. Twice.

1. 1
2. 2
Rutin
19
3. 3
4. 4
khawk
14
5. 5
A4L
13

• 13
• 26
• 10
• 11
• 44
• ### Forum Statistics

• Total Topics
633743
• Total Posts
3013643
×