On What Basis Are Holy Days Calculated?

  • Naw-Rúz: 1 Bahá
  • Riḍván: The first, ninth, and twelfth day of Riḍván are on 13 Jalál, 2 Jamál, and 5 Jamál respectively. The observance for the first day of Riḍván is at 15:00 disregarding DST, so if your region in on DST at the time, it will be one hour later.
  • Declaration of the Báb: 8 ‘Aẓamat, 2 hours 11 minutes after sunset.
  • Ascension of Bahá'u'lláh: 13 ‘Aẓamat at 3:00 disregarding DST.
  • Martyrdom of the Báb: 17 Raḥmat at solar noon.
  • Birth of the Báb: The first day after the eighth New Moon following Naw-Rúz, can fall within the months of Mashíyyat, ‘Ilm, and Qudrat.
  • Birth of Bahá'u'lláh The second day after the eighth New Moon following Naw-Rúz.
  • Day of the Covenant: 4 Qawl.
  • Ascension of 'Abdu'l-Bahá 6 Qawl at 01:00 disregarding DST.

How Accurate is this Website?

There are three relevant sources of inaccuracy for the calculations on this website. The calculation of the sunset and sunrise times, the calculation of the Northward (or Vernal in the Northern Hemisphere) Equinox, and the calculation of the Moon Phases to determine the dates of the Twin Holy Days.

Sunset and Sunrise Times

The formal definition of the sunset is the moment when the upper rim of the sun touches the Western horizon. This can be calculated to a decent precision from the movement of the Earth around the Sun and the location on Earth and the code I wrote for this (see the question below for the source) should typically be accurate to significantly more than the minute-precision in which times are quoted on this website. I have compared over 17,000 times across 16 locations spanning extremes of latitude and longitude to outside sources such as the US Naval Observatory and found that 97% agreed to within one minute, with the rest accurate to within 3 mintues. The only exception to this are locations experiencing polar night or midnight sun (i.e. within the polar circles) for which - for the days immediately preceding and following periods of polar night or midnight sun - the discrepancy can be larger.
There are however some factors that will affect sunrise and sunset times, which are extremely difficult or impossible to include in such calculations, which make a completely accurate prediction impossible:

  • Landscape: If you are in a valley, the sun will appear to rise later and set earlier, the opposite on the top of a mountain. (Note that this effect is caused by the relative altitude between you and your surroundings, not the absolute altitude, if everything you can see is at the same altitude as you, this doesn't make a noticeable difference.)
    Including this in the calculations would require a complete topographical map of the planet and very complicated adjustments. You can, however, do an approximate adjustment yourself: For every 1500 meters altitude difference between you and the horizon behind which you see the sun appear/disappear, adjust the quoted time by one minute.
  • Atmospheric Refraction: As the Sun has a finite size, sunset does not occur when it is at an angle of 90° to the vertical, but a little later. The semidiameter of the sun modifies this angle by about 16 arcminutes. Furthermore, light from the sun is refracted, or bent around by the atmosphere, which introduces an additional correction. At the time of sunrise and sunset at normal atmospheric conditions, this adds another 34 arcminutes for a total of 50 arcminutes, which is included in the calculations. However, the atmospheric refraction is influenced by the weather and thus can unpredictably modify the resulting times by up to tens of seconds.

ΔT ("Delta-T")

The rotation of the earth is not constant and is in fact gradually slowing, mainly due to tidal friction, though there are some other factors that affect the rotation speed. This results in a complication as for everyday life, we don't want the time of the day drift over time with respect to events such as sunrises and sunsets. To compensate for this, leap seconds are occasionally inserted into UTC timekeeping (most recently in December 2016). Astronomical calculations however, rely on a completely constant method of time-keeping and thus use the so-called "Terrestrial Time" which does not use leap seconds.
ΔT describes the difference between Universal Time and Terrestrial Time and is currently around 70 seconds, but will exceed 10 minutes some time in the 23rd century. Because ΔT can only be accurately determined by observation, its value in the far future is quite uncertain and quickly starts to dominate over the errors in other calculations.

Time of the Equinox

Calculating the time of the equinox would be easy if the year had a constant length, i.e. the time between two equinoxes didn't change. Unfortunately, this is not the case, mainly because of the gravitational effects of the moon on the rotation of the earth and thus finding the time of the equinox means calculating the orbital dynamics of several objects in the solar sytem. Accurate calculations of this are immensely complex and quite CPU intensive. The code I have used to generate the vernal equinox times for this website should however be accurate to within a few seconds (other than the mentioned uncertainty in ΔT). Inaccuracies in this are only problematic for the Badí' calendar in years, where the Equinox occurs very close in time to sunset in Tehran, which in the next 300 years will only occur in 2026 and 2059 AD, which are both covered by the list of dates provided by the Bahá'í World Centre. For 2026 there was a discrepancy between the calculations of this website and the mentioned list, with the website putting the vernal equinox about 20 seconds before sunset. In response to my query I was informed that as the two events coincide to the nearest minute, it was concluded by the World Centre that the equinox did not occur before sunset. (c.f. Kitáb-i-Aqdas Q&A 35 "even should this occur no more than one minute before sunset.")
For the year 2352 AD (509 B.E.), the calculated difference between sunset in Tehran and the moment of the equinox is only about 1.5 times the estimated uncertainty in ΔT (~9 minutes vs. ~6 minutes), therefore calculations on this website only extend to 507 B.E., as the date of Naw-Rúz of the following year is required to determine the length of Ayyám-i-Há.

Time of the Moon Phases

As the Moon phase times are only used to determine the date but not the time of the Twin Holy Days, their accuracy - similar to that of the time of the equinox - only becomes relevant when the times are at a Badí' date boundary. If this is the case for a New Moon on the date of Naw-Rúz, this could offset the results by a whole (lunar) month. An incorrect decision about the Badí' date of the eighth New Moon after Naw-Rúz, could offset the calculated dates by a day. The former should not be an issue, as the first occurrence where the margin is only a few minutes is in 2357 AD (514 B.E.), which is beyond the range of dates handled by this website (see above). The latter could become an issue, though during the range of dates handled there are only 4 years in which the margin becomes potentially problematic (2176 AD: ~3min, 2245 AD: ~5min, 2267 AD: ~2.5min, 2339 AD: ~4.5min) so in these years, the dates provided for the Twin Birthdays could potentially be wrong by one day.

A Note About Time Zones

Time zones are changed occasionally (e.g. Venezuela moved from -4:30 to -4:00 on 1 May 2016) and also the way Daylight Saving Time is handled is not always constant. As these are political decisions, they cannot be predicted. Such changes cannot affect dates in the Badí' calendar but they can affect the times that are reported. Furthermore, current rules for DST changes are only extrapolated forwards to a limited degree (currently until 2037 AD) so times that are further into the future are displayed as if there was no DST.

What Algorithms are Used for the Astronomical Calculations?

Sunrise / Sunset

I originally used the native PHP functions date_sunrise() and date_sunset(), but was dissatisfied with their accuracy (at high latitudes errors of sometimes as much as 5 minutes) and the fact that they return Unix timestamps which (since the system this website is running on is 32bit) are subject to the Year 2038 problem. The system now uses a custom implementation of the algorithm given by Jean Meeus in "Astronomical Algorithms".

Moon Phases

Times of moon phases are implemented using a custom implementation of the algorithm given by Jean Meeus in "Astronomical Algorithms" (Chapter 49 in the second edition), using all corrections up to order 0.00002 days (~1.7 seconds).


Equinox times are not calculated on the fly by this program. Accurate Equinox calculations are immensely complex and involve corrections with literally hundreds of thousands of coefficients. This additionally makes them quite CPU intensive. I use code written on the basis of the JPL DE405 model (the model which is also the basis for the Astronomical Almanac and is considered accurate for the timespan 1600 to 2200 AD) to calculate Equinox times until 2200 AD and the VSOP87 model for times after 2200 AD, which are then hard-coded into the program, as on-the-fly calculation would make the system noticeably slower.

Why Is the Weekday Istiqlál Marked in the Calendars?

Istiqlál corresponds to Friday in the Gregorian calendar (or more specifically for the period between sunset on Thursday and sunset on Friday) and is the day of rest in the Badí' calendar. Note, that this is not commonly observed at this time.

What about Daylight Saving Time?

Local Standard Time is used in the Badí' calendar for all times that are not determined by solar events. This means that e.g. the first day of Riḍván, which is commemorated at 15:00 local standard time would be celebrated at 16:00 local summer time (as this corresponds to 15:00 local standard time).

Since rules for DST change, the data present in date libraries will be restricted to a certain period. Any dates on this website farther than 20 years into the future will likely not have associated DST information. Furthermore, even within that period, times could become outdated as DST rules change. Lastly, the data, which is drawn from the IANA timezone database, is not guaranteed to be error-free.

Also note, that the one-hour shift during DST is not universal. As far as I know, there is only one place in the world that currently uses a different shift, namely Lord Howe Island in Australia (population 360), which uses 30 minutes. In such a situation, times while DST is in effect will not be correct.

What About Locations at Extreme Latitudes?

In areas at extreme latitudes, where days vary strongly in length or even periods of Polar Night or Midnight Sun are experienced, fixed times are often used instead of the actual times for sunrise and sunet. The exact implementation details of this are up to the discretion of the respective National Spiritual Assembly. For the following regions, such handling is implemented. As far as I was able to find out, no other region currently has set times for this. Please contact me if you know of any that are missing from the list. Times below are given as sunrise/noon/sunset.

  • Canada: 06:30/12:00/18:00 for areas above 60°N
  • Finland: 06:00/12:00/18:00 local standard time (i.e. 07:00/13:00/19:00 local time while DST is in effect) except during the month of 'Alá', where the actual times of sunrise, noon, and sunset are used.
  • Iceland: 06:00/13:00/18:00
  • Norway: 06:00/12:00/18:00
  • Sweden: 06:00/12:00/18:00 in Norrland (i.e. the provinces of Lappland, Norrbotten, Västerbotten, Jämtland, Ångermanland, Medelpad, Härjedalen, Hälsingland, and Gästrikland)
  • USA: 06:00/12:00/18:00 local standard time (i.e. 07:00/13:00/19:00 local time while DST is in effect) in Alaska

What Do the † and ‡ Symbols Next to Some of the Dates Mean?

In the polar regions, a phenomenon occurs where the sun doesn't rise or set for an extended period of time. This is called Polar Night for periods of darkness and Midnight Sun for periods of daylight. † and ‡ mark days as experiencing Polar Night and Midnight Sun respectively at the chosen location. As the Badí' date starts at sunset, this is clearly problematic for the calculations and thus for all calculations involving such days, sunrise is taken to be at 06:00 and sunset at 18:00 local time. Note that the symbols will not be displayed in areas where specific rules exist for using specific times rather than actual solar times (see above).

What about Dates Before 172 B.E.?

Dates before 172 B.E. are handled with the conventions previously customary outside of Iran:

  • Naw-Rúz begins at sunset on 20 March
  • The other Holy Days are 21 April, 29 April, 2 May, 23 May, 29 May, 9 July, 20 October, 20 November, 26 November, 28 November
  • Ayyám-i-Há is 5 days in a Gregorian leap year, otherwise 4.

How Can I Help?

Glad you ask! :-)
The calculations on this website are relatively complicated and between longitudes, latitudes, timezones, daylight saving time etc. it is quite easy for problems to sneak in that are hard to spot because they might depend on the specifics of your location. So if you could have a look at some dates and times and tell me if you spot an error somewhere, please drop me a line. Probably the best way to look for errors is by generating a full PDF calendar, as all the data where something could possibly go wrong is included in that.
Things to look out for specifically are:

  • Is Naw-Rúz at the right date? This is particularly important as it would have a knock-on effect on all other dates.
  • Are the Holy Day Observances at the correct times? See the FAQ item about the calculation of the Holy Days for reference and note that as mentioned there, some observances are subject to an apparent shift in the nominal time due to DST.
  • Are the sunset times accurate? I.e. how are they holding up in comparison to those offered by other websites. If you find any times that are off by more than a minute (unless they are immediately before or after a period of Polar Night or Midnight Sun), please let me know!

You could also contribute to the modules underlying the calculations on this website, which are available on GitHub:

Thank you very much for your help!

When Creating a PDF Calendar, the Progress Bar Reaches 100% but Nothing Happens.

This suggests that the script timed out while generating the PDF. Please try again and if the problem persists, contact me and let me know what year and location you put in.

Why Is xyz not Correct?

It's probably a bug I haven't caught yet. If you find a date or time that you think is incorrect, please contact me with the error and what set of inputs (location, date, etc.) produced it, so I can figure out what's going on.

Can I See your Code?

At the backbone of this site sit two JavaScript modules, one for calculating sunrises, sunsets, and moon phases, the other a Badí' date class. They are both available on GitHub: