How to calculate Easter for any year (1 Viewer)

Status
Not open for further replies.

isladogs

MVP / VIP
Local time
Today, 21:34
Joined
Jan 14, 2017
Messages
18,186
I mentioned this in another thread earlier today.
https://www.access-programmers.co.uk/forums/showthread.php?t=294618

The function below calculates Easter Sunday for any year.
Apparently, that is the first Sunday after the first ecclesiastical full moon that occurs on or after March 21.
And there was me thinking they just made it up every year ....

Code:
Public Function GetEasterSunday(Yr As Integer) As Date

'Code taken from http://www.cpearson.com/excel/Easter.aspx

    Dim D As Integer
    D = (((255 - 11 * (Yr Mod 19)) - 21) Mod 30) + 21
    GetEasterSunday = DateSerial(Yr, 3, 1) + D + (D > 48) + 6 - ((Yr + Yr \ 4 + D + (D > 48) + 1) Mod 7)
            
End Function

That's it!

The code is by Chip Pearson who is, in my view anyway, the Excel equivalent of Allen Browne.
I just made minor tweaks to use it in Access

Apparently its 'only' guaranteed to be correct between 1900 and 2368 - I've no idea why.
After that it doesn't always work
However, if you're planning to still be around in 2369, you've got plenty of time to modify the code .. and to post a new version here :eek:

If you've never checked Chip's site, I strongly recommend it.
He also has code to calculate other holiday dates (mainly USA such as Thanksgiving)
Lots of other 'goodies' such as 'Programming The VBA Editor' using the 'Microsoft Visual Basic For Applications Extensibility 5.3' reference library

http://www.cpearson.com/Excel/MainPage.aspx
 
Last edited:

isladogs

MVP / VIP
Local time
Today, 21:34
Joined
Jan 14, 2017
Messages
18,186
More Holiday Dates

The attached database Holidays021 calculates a variety of holiday dates for various different calendars and religions

Word doc included with further explanations

The attached database isn't mine and I don't have the author details.
I know its several years old but that makes it no less useful.

Please let me know if it is yours or you know who wrote it.
 

Attachments

  • Holidays021.zip
    169.6 KB · Views: 405

MS ACCESS PROBZZZ

Registered User.
Local time
Today, 14:34
Joined
Jun 12, 2018
Messages
29
Is it possible to do this as an Access function instead of VBA so I can store this in a table? Or should I not be storing the date in my table?

The end result I'm looking for is to have a form where I enter "press pitch info" and then select an appropriate holiday name from a combo box. Based on that selection the form should display the correct date of the next instance of this holiday.

So I think I will need a table:
Tbl_Holidays
Holiday_ID
HolidayName
HolidayDate

I only know how to use VBA with forms, not with tables, and can't think of a method for this.

Do you have any pointers?
 

isladogs

MVP / VIP
Local time
Today, 21:34
Joined
Jan 14, 2017
Messages
18,186
You posted to the repository which is a moderated area.
In this case, luckily I saw the post almost as soon as you did it ...

Code:
Public Function GetEasterSunday(Yr As Integer) As Date

This is an Access function!
Put the code into a standard module and call it from a form button
Similarly with other similar date calculations

Both the Holidays021 database (see post #2) and the one attached (which was written by Pat Hartman) will give you more idea on how to use date functions in forms

As the holiday dates will not change (for any calendar year), it is perfectly OK to store them in a table if you wish
 

Attachments

  • UsefulDateFunctions.zip
    200.3 KB · Views: 373
Status
Not open for further replies.

Users who are viewing this thread

Top Bottom