The Horizon Plane and the Sun's Daily Motion One of the fundamental concepts we learn in high school geography is how the Sun's position on the horizon plane changes throughout the day. On a horizon diagram drawn on paper, the right side represents east and the left represents west. The Sun begins rising from the east, reaches its highest point at noon, and then begins descending toward the west. The moment the Sun reaches this highest point — that is, when it crosses the meridian — is noon, and it falls exactly in the middle of the day. If the length of daylight is known, dividing it in half allows easy calculation of sunrise and sunset times. This simple geometric principle actually forms the basis of the astronomical methods used to calculate Islamic prayer times. Prayer Times in the Quran One of the Quran's fundamental approaches is grounding prayer times in naturally observable phenomena. The Quran defines prayer times not through abstract time intervals, but through concrete natural events. Surah Hud, verse 114 states: "Establish prayer at the two ends of the day and in the early part of the night; indeed, good deeds drive away evil deeds. That is a reminder for those who remember." This phrasing shows that prayer times must be determined according to observable astronomical events. According to the Quran:
- Fajr (dawn prayer) begins with the separation of black and white light in the sky — the true dawn (fajr al-sadiq).
- Dhuhr and Asr are associated with shadow length and the Sun's position.
- Maghrib begins with the setting of the Sun.
- Isha enters when the red and white twilight fully disappears and darkness prevails. All of these definitions are observable natural events that can be expressed numerically through astronomical calculation. Astronomical Equivalents of Prayer Times Each prayer time has an astronomical counterpart. Fajr (Imsak): The true dawn (fajr al-sadiq) corresponds to the beginning of light spreading across the eastern horizon when the Sun is approximately −9° below the horizon. Before this, when the Sun is −18° below the horizon, a narrow vertical beam of light known as fajr al-kadhib (false dawn) appears; it is not valid for fasting purposes and the morning prayer cannot be performed at that time. Dhuhr (Noon): The moment the Sun crosses the meridian — its highest point in the sky for that day. This is precisely calculated astronomically as the meridian transit. Asr (Afternoon): Calculated using the Sun's altitude at noon; the zenith distance is derived from this figure. Maghrib (Sunset): The moment the Sun crosses the geometric horizon — one of the most precisely calculated prayer times astronomically. Isha (Night): The moment when the evening redness and twilight completely disappear. The Süleymaniye Foundation calculates this as the moment when the Sun is −9° below the horizon. The Mathematics of Astronomical Calculation Two fundamental astronomical parameters are used to calculate prayer times. Solar Declination (δ): Expresses the Sun's vertical tilt in the sky and changes throughout the year. It takes positive values in summer and negative values in winter, which is why the length of daylight and prayer times vary from season to season. Hour Angle (H): The angular distance of the Sun from the local meridian. H = 0 when the Sun is exactly on the meridian; it takes negative values at sunrise and positive values at sunset. Using these two parameters along with the observer's latitude, the Sun's altitude in the sky can be calculated for any given moment. Once a target altitude is defined, the corresponding time can be found with high precision using a binary search algorithm. In calculations performed with Python's Skyfield library, a 50-iteration binary search achieves precision well below one second. Calendars in Turkey and Comparison Three different prayer time calendars are widely used in Turkey. The Diyanet Calendar, despite being the official state calendar, contradicts astronomical data and the Quranic definitions. In particular, the imsak (predawn) time is set well before the true fajr al-sadiq, and it claims the isha time begins with only 4–5 minutes remaining before the isha window closes. The Fazilet Calendar is used by many mosques and Muslim communities in Turkey, yet it is the most inaccurate of the three. The Süleymaniye Foundation Calendar was developed through extensive research led by Prof. Dr. Abdülaziz Bayındır. This calendar calculates prayer times in direct alignment with the Quranic definitions and astronomical observations. For instance, the −9° solar depression used for imsak corresponds to the observational reality of fajr al-sadiq; the −18° angle used by other calendars corresponds to the fajr al-kadhib period — the false dawn — which contradicts the Quranic definition. Worldwide, various methods are in use: the Umm al-Qura calendar in Saudi Arabia, the ISNA method in North America, the Muslim World League (MWL) method internationally, and locally adapted calendars in countries such as Iran, Pakistan, Indonesia, and Singapore based on geographic and jurisprudential considerations. Sample Calculation: May 20, 2026 — Efeler The following calculations, performed using Python's Skyfield library according to the Süleymaniye Foundation's method, give the prayer times for Efeler (latitude: 37.84°N, longitude: 27.84°E) on May 20, 2026: | Prayer | Time | |---|---| | Imsak (True Dawn, −9°) | 05:07:04 | | Sunrise | 05:54:54 | | Dhuhr (Meridian Transit) | 13:05:10 | | Asr (Shadow = height) | 16:57:11 | | Sunset | 20:15:53 | | Isha (−9°) | 21:03:52 | from skyfield.api import load, Topos from skyfield import almanac import pytz import math
-----------------------------
SETUP
-----------------------------
ts = load.timescale() eph = load('de421.bsp') lat, lon = 37.8402, 27.8379 tz = pytz.timezone("Europe/Istanbul") location = Topos(latitude_degrees=lat, longitude_degrees=lon) observer = eph['earth'] + location sun = eph['sun'] year, month, day = 2026, 5, 20
Search intervals (UTC-based)
t0 = ts.utc(year, month, day, 0) t1 = ts.utc(year, month, day, 23, 59)
-----------------------------
NOON, SUNRISE AND SUNSET
-----------------------------
f_noon = almanac.meridian_transits(eph, sun, location) t_noon_list, _ = almanac.find_discrete(t0, t1, f_noon) t_noon = t_noon_list[0] f_ss = almanac.sunrise_sunset(eph, location) t_ss, e_ss = almanac.find_discrete(t0, t1, f_ss) sunrise = next(t for t, e in zip(t_ss, e_ss) if e == 1) sunset = next(t for t, e in zip(t_ss, e_ss) if e == 0)
-----------------------------
ASR (AFTERNOON) ANGLE CALCULATION
-----------------------------
Get the solar altitude at noon with full precision
alt_at_noon = observer.at(t_noon).observe(sun).apparent().altaz()[0].degrees zenith_dist = 90 - alt_at_noon
Asr al-Awwal: arccot(1 + tan(z))
asr_alt = math.degrees(math.atan(1 / (1 + math.tan(math.radians(zenith_dist)))))
-----------------------------
BINARY SEARCH
-----------------------------
def find_time_at_alt(target_alt, t_start, t_end, rising=True): ts_start = t_start.tt ts_end = t_end.tt for _ in range(50): # Increased precision mid_tt = (ts_start + ts_end) / 2 mid_t = ts.tt_jd(mid_tt) current_alt = observer.at(mid_t).observe(sun).apparent().altaz()[0].degrees if rising: if current_alt < target_alt: ts_start = mid_tt else: ts_end = mid_tt else: if current_alt > target_alt: ts_start = mid_tt else: ts_end = mid_tt return ts.tt_jd(ts_start).utc_datetime().astimezone(tz)
-----------------------------
CALCULATE PRAYER TIMES
-----------------------------
Start Asr search 1 minute after noon (to avoid overlap)
t_after_noon = ts.tt_jd(t_noon.tt + (1/1440)) fajr = find_time_at_alt(-9, t0, sunrise, rising=True) asr = find_time_at_alt(asr_alt, t_after_noon, sunset, rising=False) isha = find_time_at_alt(-9, sunset, t1, rising=False)
-----------------------------
RESULTS
-----------------------------
print(f"--- Prayer Times for {day:02d}.{month:02d}.{year} ---") print(f"Fajr (Imsak) : {fajr.strftime('%H:%M:%S')}") print(f"Sunrise : {sunrise.utc_datetime().astimezone(tz).strftime('%H:%M:%S')}") print(f"Dhuhr (Noon) : {t_noon.utc_datetime().astimezone(tz).strftime('%H:%M:%S')}") print(f"Asr : {asr.strftime('%H:%M:%S')}") print(f"Sunset : {sunset.utc_datetime().astimezone(tz).strftime('%H:%M:%S')}") print(f"Isha : {isha.strftime('%H:%M:%S')}") In this calculation, the noon prayer is precisely fixed by the meridian transit, while Asr is derived from a formula based on the Sun's altitude at noon. The −9° below-horizon angle used for Imsak and Isha is the observational equivalent of fajr al-sadiq and evening twilight respectively. Conclusion Determining prayer times accurately is both a religious responsibility and a matter of scientific precision. The Quran grounds these times in observable natural phenomena; modern astronomy has given us the tools to calculate these phenomena with mathematical exactness. The Süleymaniye Foundation Calendar puts this approach into practice, bridging the Quranic definitions with astronomical data. What begins as understanding the Sun's position on the horizon plane evolves into a sophisticated science spanning solar declination calculations and binary search algorithms — ultimately producing both a scientific and Quranic answer to the most fundamental question of daily worship: "What time should I pray?"