The Emacs calendar knows about all major and many minor holidays, and can display them.
Display holidays for the selected date (calendar-cursor-holidays).
Display any holidays for the date you click on.
Mark holidays in the calendar window (mark-calendar-holidays).
Unmark calendar window (calendar-unmark).
List all holidays for the displayed three months in another window (list-calendar-holidays).
List all holidays for three months around today's date in another window.
List holidays in another window for a specified range of years.
To see if any holidays fall on a given date, position point on that date in the calendar window and use the h command. Alternatively, click on that date with Mouse-2 and then choose Holidays from the menu that appears. Either way, this displays the holidays for that date, in the echo area if they fit there, otherwise in a separate window.
To view the distribution of holidays for all the dates shown in the calendar, use the x command. This displays the dates that are holidays in a different face (or places a * after these dates, if display with multiple faces is not available). The command applies both to the currently visible months and to other months that subsequently become visible by scrolling. To turn marking off and erase the current marks, type u, which also erases any diary marks (Section 31.10).
To get even more detailed information, use the a command, which displays a separate buffer containing a list of all holidays in the current three-month range. You can use SPC in the calendar window to scroll that list.
The command M-x holidays displays the list of holidays for the current month and the preceding and succeeding months; this works even if you don't have a calendar window. If you want the list of holidays centered around a different month, use C-u M-x holidays, which prompts for the month and year.
The holidays known to Emacs include United States holidays and the major Christian, Jewish, and Islamic holidays; also the solstices and equinoxes.
The command M-x list-holidays displays the list of holidays for a range of years. This function asks you for the starting and stopping years, and allows you to choose all the holidays or one of several categories of holidays. You can use this command even if you don't have a calendar window.
The dates used by Emacs for holidays are based on current practice, not historical fact. Historically, for instance, the start of daylight savings time and even its existence have varied from year to year, but present United States law mandates that daylight savings time begins on the first Sunday in April. When the daylight savings rules are set up for the United States, Emacs always uses the present definition, even though it is wrong for some prior years.