![]() |
General Programming »
Date and Time »
Algorithms
Intermediate
Calculating Easter SundayBy Oskar WielandHow to find Easter Sunday and Ash Wednesday |
VC6Win2K, MFC, Dev
|
|
Advanced Search Add to IE Search |
|
|
|
||||||||||||||||
Looking through old Pascal sources I found an algorithm to calculate Easter Sunday. I reinterpreted it to C++ and packed it into a small MFC dialog application.
The sample calculates Easter from 1970 to 2037. Responsible for the limitation is the function
mktime, used to calculate the offset to ash. Basically GetEasterSunday
is able to
calculate Easter from 1583 (beginning of Gregorian calendar) to 2499 (end of correction values).
Ash Wednesday is 46 days before Easter Sunday.
void CEasterDlg::GetEasterSunday( WORD wYear, WORD& wMonth, WORD& wDay ) { // calculate easter sunday // [in] wYear - 4-digit year to calculate (but not before 1583) // [out] wMonth - month of easter sunday // [out] wDay - day of easter sunday WORD wCorrection = 0; if( wYear < 1700 ) wCorrection = 4; else if( wYear < 1800 ) wCorrection = 5; else if( wYear < 1900 ) wCorrection = 6; else if( wYear < 2100 ) wCorrection = 0; else if( wYear < 2200 ) wCorrection = 1; else if( wYear < 2300 ) wCorrection = 2; else if( wYear < 2500 ) wCorrection = 3; wDay = (19 * (wYear % 19) + 24) % 30; wDay = 22 + wDay + ((2 * (wYear % 4) + 4 * (wYear % 7) + 6 * wDay + 5 + wCorrection) % 7); // jump to next month if( wDay > 31 ) { wMonth = 4; wDay -= 31; } else { wMonth = 3; } }
Have fun.
| You must Sign In to use this message board. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
General
News
Question
Answer
Joke
Rant
Admin
Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+PgUp/PgDown to switch pages.
|
PermaLink |
Privacy |
Terms of Use
Last Updated: 23 Nov 2001 Editor: Chris Maunder |
Copyright 2001 by Oskar Wieland Everything else Copyright © CodeProject, 1999-2010 Web09 | Advertise on the Code Project |