Monthly Archives: July 2015

Ramadan predictions for the next 200 years

Prediction of Ramadan dates 2015 – 2215

In a previous post, I described a strikingly robust and elegant prediction for the Islamic calendar:

The new Islamic Lunar month begins at sunset of the day when the conjunction occurs before 12:00 Noon UTC

This is enough to predict/stansdardize Ramadan dates hundreds of years into the future (inshallah), using a high-accuracy ephemeris such as the NASA JPL DE430/431 and some data analysis software. Full results in CSV format can be downloaded at the link below. In addition, the table below contains the Ramadan start and end dates.

Download: Islamic calendar prediction 2015-2215 (CSV format)

 

Gregorian date Islamic month begins at sunset
17 June 2015 Ramadan
16 July 2015 Shawwal
05 June 2016 Ramadan
04 July 2016 Shawwal
26 May 2017 Ramadan
24 June 2017 Shawwal
15 May 2018 Ramadan
14 June 2018 Shawwal
05 May 2019 Ramadan
03 June 2019 Shawwal
23 April 2020 Ramadan
23 May 2020 Shawwal
12 April 2021 Ramadan
12 May 2021 Shawwal
01 April 2022 Ramadan
01 May 2022 Shawwal
22 March 2023 Ramadan
20 April 2023 Shawwal
10 March 2024 Ramadan
09 April 2024 Shawwal
28 February 2025 Ramadan
29 March 2025 Shawwal
17 February 2026 Ramadan
19 March 2026 Shawwal
07 February 2027 Ramadan
08 March 2027 Shawwal
27 January 2028 Ramadan
26 February 2028 Shawwal
15 January 2029 Ramadan
14 February 2029 Shawwal
04 January 2030 Ramadan
03 February 2030 Shawwal
25 December 2030 Ramadan
23 January 2031 Shawwal
14 December 2031 Ramadan
13 January 2032 Shawwal
03 December 2032 Ramadan
01 January 2033 Shawwal
22 November 2033 Ramadan
22 December 2033 Shawwal
11 November 2034 Ramadan
11 December 2034 Shawwal
31 October 2035 Ramadan
30 November 2035 Shawwal
19 October 2036 Ramadan
18 November 2036 Shawwal
09 October 2037 Ramadan
07 November 2037 Shawwal
29 September 2038 Ramadan
28 October 2038 Shawwal
18 September 2039 Ramadan
18 October 2039 Shawwal
06 September 2040 Ramadan
06 October 2040 Shawwal
27 August 2041 Ramadan
25 September 2041 Shawwal
16 August 2042 Ramadan
14 September 2042 Shawwal
05 August 2043 Ramadan
03 September 2043 Shawwal
25 July 2044 Ramadan
23 August 2044 Shawwal
14 July 2045 Ramadan
13 August 2045 Shawwal
04 July 2046 Ramadan
02 August 2046 Shawwal
23 June 2047 Ramadan
23 July 2047 Shawwal
12 June 2048 Ramadan
11 July 2048 Shawwal
01 June 2049 Ramadan
30 June 2049 Shawwal
21 May 2050 Ramadan
19 June 2050 Shawwal
10 May 2051 Ramadan
09 June 2051 Shawwal
29 April 2052 Ramadan
28 May 2052 Shawwal
19 April 2053 Ramadan
18 May 2053 Shawwal
08 April 2054 Ramadan
08 May 2054 Shawwal
28 March 2055 Ramadan
27 April 2055 Shawwal
16 March 2056 Ramadan
15 April 2056 Shawwal
05 March 2057 Ramadan
04 April 2057 Shawwal
23 February 2058 Ramadan
24 March 2058 Shawwal
12 February 2059 Ramadan
14 March 2059 Shawwal
02 February 2060 Ramadan
03 March 2060 Shawwal
22 January 2061 Ramadan
20 February 2061 Shawwal
11 January 2062 Ramadan
09 February 2062 Shawwal
31 December 2062 Ramadan
29 January 2063 Shawwal
20 December 2063 Ramadan
18 January 2064 Shawwal
08 December 2064 Ramadan
07 January 2065 Shawwal
28 November 2065 Ramadan
27 December 2065 Shawwal
18 November 2066 Ramadan
17 December 2066 Shawwal
07 November 2067 Ramadan
07 December 2067 Shawwal
26 October 2068 Ramadan
25 November 2068 Shawwal
15 October 2069 Ramadan
14 November 2069 Shawwal
04 October 2070 Ramadan
03 November 2070 Shawwal
24 September 2071 Ramadan
23 October 2071 Shawwal
12 September 2072 Ramadan
12 October 2072 Shawwal
02 September 2073 Ramadan
01 October 2073 Shawwal
23 August 2074 Ramadan
21 September 2074 Shawwal
12 August 2075 Ramadan
10 September 2075 Shawwal
31 July 2076 Ramadan
29 August 2076 Shawwal
20 July 2077 Ramadan
18 August 2077 Shawwal
09 July 2078 Ramadan
08 August 2078 Shawwal
29 June 2079 Ramadan
28 July 2079 Shawwal
18 June 2080 Ramadan
17 July 2080 Shawwal
07 June 2081 Ramadan
07 July 2081 Shawwal
28 May 2082 Ramadan
26 June 2082 Shawwal
17 May 2083 Ramadan
15 June 2083 Shawwal
05 May 2084 Ramadan
03 June 2084 Shawwal
24 April 2085 Ramadan
24 May 2085 Shawwal
14 April 2086 Ramadan
13 May 2086 Shawwal
03 April 2087 Ramadan
03 May 2087 Shawwal
23 March 2088 Ramadan
21 April 2088 Shawwal
12 March 2089 Ramadan
11 April 2089 Shawwal
01 March 2090 Ramadan
31 March 2090 Shawwal
18 February 2091 Ramadan
20 March 2091 Shawwal
08 February 2092 Ramadan
08 March 2092 Shawwal
27 January 2093 Ramadan
26 February 2093 Shawwal
17 January 2094 Ramadan
15 February 2094 Shawwal
06 January 2095 Ramadan
05 February 2095 Shawwal
27 December 2095 Ramadan
25 January 2096 Shawwal
15 December 2096 Ramadan
14 January 2097 Shawwal
04 December 2097 Ramadan
03 January 2098 Shawwal
23 November 2098 Ramadan
23 December 2098 Shawwal
13 November 2099 Ramadan
12 December 2099 Shawwal
02 November 2100 Ramadan
02 December 2100 Shawwal
23 October 2101 Ramadan
21 November 2101 Shawwal
12 October 2102 Ramadan
11 November 2102 Shawwal
02 October 2103 Ramadan
31 October 2103 Shawwal
20 September 2104 Ramadan
19 October 2104 Shawwal
09 September 2105 Ramadan
08 October 2105 Shawwal
29 August 2106 Ramadan
28 September 2106 Shawwal
19 August 2107 Ramadan
17 September 2107 Shawwal
07 August 2108 Ramadan
06 September 2108 Shawwal
28 July 2109 Ramadan
26 August 2109 Shawwal
17 July 2110 Ramadan
16 August 2110 Shawwal
06 July 2111 Ramadan
05 August 2111 Shawwal
24 June 2112 Ramadan
24 July 2112 Shawwal
14 June 2113 Ramadan
13 July 2113 Shawwal
03 June 2114 Ramadan
03 July 2114 Shawwal
24 May 2115 Ramadan
22 June 2115 Shawwal
13 May 2116 Ramadan
11 June 2116 Shawwal
02 May 2117 Ramadan
01 June 2117 Shawwal
21 April 2118 Ramadan
21 May 2118 Shawwal
10 April 2119 Ramadan
10 May 2119 Shawwal
30 March 2120 Ramadan
28 April 2120 Shawwal
19 March 2121 Ramadan
18 April 2121 Shawwal
09 March 2122 Ramadan
07 April 2122 Shawwal
26 February 2123 Ramadan
28 March 2123 Shawwal
16 February 2124 Ramadan
16 March 2124 Shawwal
04 February 2125 Ramadan
05 March 2125 Shawwal
24 January 2126 Ramadan
22 February 2126 Shawwal
13 January 2127 Ramadan
11 February 2127 Shawwal
02 January 2128 Ramadan
01 February 2128 Shawwal
22 December 2128 Ramadan
20 January 2129 Shawwal
12 December 2129 Ramadan
10 January 2130 Shawwal
01 December 2130 Ramadan
31 December 2130 Shawwal
20 November 2131 Ramadan
20 December 2131 Shawwal
08 November 2132 Ramadan
08 December 2132 Shawwal
28 October 2133 Ramadan
27 November 2133 Shawwal
18 October 2134 Ramadan
16 November 2134 Shawwal
07 October 2135 Ramadan
06 November 2135 Shawwal
26 September 2136 Ramadan
26 October 2136 Shawwal
15 September 2137 Ramadan
15 October 2137 Shawwal
05 September 2138 Ramadan
04 October 2138 Shawwal
25 August 2139 Ramadan
23 September 2139 Shawwal
13 August 2140 Ramadan
11 September 2140 Shawwal
02 August 2141 Ramadan
01 September 2141 Shawwal
23 July 2142 Ramadan
21 August 2142 Shawwal
13 July 2143 Ramadan
11 August 2143 Shawwal
01 July 2144 Ramadan
31 July 2144 Shawwal
20 June 2145 Ramadan
20 July 2145 Shawwal
09 June 2146 Ramadan
09 July 2146 Shawwal
29 May 2147 Ramadan
28 June 2147 Shawwal
18 May 2148 Ramadan
16 June 2148 Shawwal
08 May 2149 Ramadan
06 June 2149 Shawwal
27 April 2150 Ramadan
27 May 2150 Shawwal
17 April 2151 Ramadan
16 May 2151 Shawwal
05 April 2152 Ramadan
05 May 2152 Shawwal
25 March 2153 Ramadan
24 April 2153 Shawwal
14 March 2154 Ramadan
13 April 2154 Shawwal
04 March 2155 Ramadan
02 April 2155 Shawwal
21 February 2156 Ramadan
22 March 2156 Shawwal
10 February 2157 Ramadan
11 March 2157 Shawwal
30 January 2158 Ramadan
01 March 2158 Shawwal
20 January 2159 Ramadan
18 February 2159 Shawwal
09 January 2160 Ramadan
08 February 2160 Shawwal
28 December 2160 Ramadan
26 January 2161 Shawwal
17 December 2161 Ramadan
16 January 2162 Shawwal
06 December 2162 Ramadan
05 January 2163 Shawwal
26 November 2163 Ramadan
26 December 2163 Shawwal
15 November 2164 Ramadan
14 December 2164 Shawwal
04 November 2165 Ramadan
04 December 2165 Shawwal
24 October 2166 Ramadan
23 November 2166 Shawwal
13 October 2167 Ramadan
12 November 2167 Shawwal
01 October 2168 Ramadan
31 October 2168 Shawwal
21 September 2169 Ramadan
20 October 2169 Shawwal
10 September 2170 Ramadan
10 October 2170 Shawwal
31 August 2171 Ramadan
30 September 2171 Shawwal
20 August 2172 Ramadan
18 September 2172 Shawwal
09 August 2173 Ramadan
07 September 2173 Shawwal
29 July 2174 Ramadan
27 August 2174 Shawwal
18 July 2175 Ramadan
17 August 2175 Shawwal
07 July 2176 Ramadan
05 August 2176 Shawwal
26 June 2177 Ramadan
26 July 2177 Shawwal
16 June 2178 Ramadan
15 July 2178 Shawwal
05 June 2179 Ramadan
05 July 2179 Shawwal
25 May 2180 Ramadan
23 June 2180 Shawwal
14 May 2181 Ramadan
12 June 2181 Shawwal
03 May 2182 Ramadan
01 June 2182 Shawwal
22 April 2183 Ramadan
22 May 2183 Shawwal
11 April 2184 Ramadan
10 May 2184 Shawwal
01 April 2185 Ramadan
30 April 2185 Shawwal
21 March 2186 Ramadan
19 April 2186 Shawwal
10 March 2187 Ramadan
09 April 2187 Shawwal
27 February 2188 Ramadan
28 March 2188 Shawwal
15 February 2189 Ramadan
17 March 2189 Shawwal
05 February 2190 Ramadan
06 March 2190 Shawwal
25 January 2191 Ramadan
24 February 2191 Shawwal
15 January 2192 Ramadan
13 February 2192 Shawwal
03 January 2193 Ramadan
02 February 2193 Shawwal
24 December 2193 Ramadan
22 January 2194 Shawwal
13 December 2194 Ramadan
11 January 2195 Shawwal
02 December 2195 Ramadan
31 December 2195 Shawwal
20 November 2196 Ramadan
20 December 2196 Shawwal
10 November 2197 Ramadan
09 December 2197 Shawwal
30 October 2198 Ramadan
29 November 2198 Shawwal
20 October 2199 Ramadan
18 November 2199 Shawwal
09 October 2200 Ramadan
08 November 2200 Shawwal
28 September 2201 Ramadan
28 October 2201 Shawwal
17 September 2202 Ramadan
17 October 2202 Shawwal
07 September 2203 Ramadan
06 October 2203 Shawwal
26 August 2204 Ramadan
24 September 2204 Shawwal
16 August 2205 Ramadan
14 September 2205 Shawwal
06 August 2206 Ramadan
04 September 2206 Shawwal
26 July 2207 Ramadan
24 August 2207 Shawwal
14 July 2208 Ramadan
12 August 2208 Shawwal
03 July 2209 Ramadan
02 August 2209 Shawwal
22 June 2210 Ramadan
22 July 2210 Shawwal
12 June 2211 Ramadan
11 July 2211 Shawwal
01 June 2212 Ramadan
30 June 2212 Shawwal
21 May 2213 Ramadan
20 June 2213 Shawwal
11 May 2214 Ramadan
09 June 2214 Shawwal
30 April 2215 Ramadan
29 May 2215 Shawwal

 

How to predict the Islamic calendar with a high-accuracy ephemeris

Like most Muslims around the world, my daily life is measured by a combination of the Gregorian Calendar and Coordinated Universal Time (UTC) with time zones. There is only one exception: every year I fast in Ramadan, the dates of which are not standardized. All over the world, Muslim countries and Islamic institutions appoint their own arbiters for the dates of Ramadan, and the result is that:

  1. The 1st of Ramadan and Eid al-Fitr (1st of Shawwal) are unpredictable. This is inconvenient.
  2. We end up starting and finishing Ramadan on different days (spread over about 4 days). This, I feel, is a greater shame, as I would like to be able to share the fast with my family in different countries and with Muslims locally, wherever I am.

So I studied this matter, with the aim of predicting standard dates for Ramadan in the future. I leave it to the reader to choose whether to consider this as a standardization or a prediction of Ramadan. The method and results are below.

New moon: conjunction and sighting, Islamic law and conventional practice

Most Muslim scholars consider that the new month of the Islamic calendar begins with the sighting of the new moon. Astronomically, the new moon is the conjunction of the moon and the sun: in terms of astronomical coordinates, the conjunction occurs when the right ascension of the moon equals the right ascension of the sun. But the trouble with the conjunction is that it is invisible: the moon is aligned with the sun, and sets simultaneously with the sun. It only becomes visible later to the naked eye, typically 18 hours later, as a thin crescent.

Telescope image of the new moon, perhaps about a day old

 

As is recorded in the Hadith, “Allah’s Messenger (peace be upon him) said: Whenever you sight the new moon (of the month of Ramadan) observe the fast, and when you sight it (the new moon of Shawwal) break it, and if the sky is cloudy for you, then observe the fast for thirty days.”

This is taken by most Muslim scholars today as a basis for the opinion that one must wait for the sighting of the moon, and it is wrong to base the calendar on standards or calculations. On the other hand, there have been many standards of the Islamic calendar historically. Note that the Qur’an gives an impression which is quite different from the conventional opinion:

The sun and the moon [move] by precise calculation (Qur’an, Surat Ar-Raĥmān 55:5)

and

It is He who made the sun a shining light and the moon a derived light and determined for it phases – that you may know the number of years and account [of time]. Allah has not created this except in truth. He details the signs for a people who know  (Qur’an, Surat Yūnus 10:5)

This is a complicated subject fraught with disagreements, so I refer the reader to much better articles on the Islamic perspectives:

My view is that, as long as we wait for the sighting of the moon (or follow other people who claim to have sighted the moon), we will never start and finish Ramadan on the same day. Consider the following:

  1. The world is round and there are different time zones. Suppose the moon is sighted in Mecca (or further east, say in Indonesia) after sunset. However, at the same moment, in Hawaii (or North America), the sun has already risen, and Muslims have started the fast. Should they then break their fast immediately, or wait for the following sunset? Even if all Muslims around the world followed a single human authority on the moon sighting, this means that they would still break their fasts on separate days.
  2. Humans will never agree on the moon sighting, even in the same location, under clear skies, because the moon sighting depends on one’s eyesight. At the start and end of Ramadan, people compete with each other to be the first to see the new moon, with the result that 1st Ramadan and 1st Shawwal are declared while it is actually still impossible for 99% of ordinary people to see the new moon with the naked eye.

How to standardize the Islamic calendar so that all Muslims can fast on the same dates?

I recent read a proposed standardization of Islamic calendar dates, which I find to be strikingly simple, elegant and robust:

The new Islamic Lunar month begins at sunset of the day when the conjunction occurs before 12:00 Noon UTC.

This standardization was originally proposed by the Fiqh Council of North America in 2006. However, they later abandoned it because they were roundly criticized by traditionalists. So, let’s neglect their role in it, and consider it only on its own merits.

Firstly, why “12 Noon Coordinated Universal Time (UTC)”? The advantage of UTC is that it is an astronomical standard, also known as GMT. At this moment, the whole world is on the same the same day of the week and the same date in the Gregorian calendar. This would not be the case if we considered another place or point in time: sunset in Mecca is not a standard time. Sunset in Mecca varies in time of day, and at that moment of sunset, midnight has already passed in the Far East, which is then on the next day of the Gregorian calendar.

Secondly, why “conjunction before Noon”? The result of this is that somewhere on the Earth’s surface there will probably be a sighting of the moon on the same date in the Gregorian calendar. It also corresponds pretty well with the actual dates that are declared.

Hypothetically, if we consider this proposal, we can see how easy it is to predict Ramadan in the future.

Ephemeris: the motion of the heavenly bodies

Three institutions in the world publish a high-accuracy ephemeris. These are: the NASA Jet Propulsion Laboratory’s DE (Development Ephemeris) series ephemerides, the Paris Observatory (Intégrateur Numérique Planétaire de l’Observatoire de Paris, or INPOP) and the Institute of Applied Astronomy in St. Petersburg (Ephemerides Planets-Moon, or EPM). I am no expert on these models, but see here for a comparison. Of course, nobody knows the future except Allah, and we should say “inshallah” even for a high-accuracy planetary ephemeris. However, the ayats from the Qur’an quoted above, still encourage us to think of the motion of heavenly bodies as standards in time. The JPL Ephemeris is believed to predict the moon position to an accuracy within about 20 m in the coming century.

Predicting the Islamic calendar with the NASA JPL Development Ephemeris

So hypothetically, let’s see how easy it is to predict the Islamic calendar with NASA’s JPL Development Ephemeris. The JPL maintains a website (and telnet service) Horizons, which uses the latest version of their model DE430/DE431. Try the following:

  1. Visit http://ssd.jpl.nasa.gov/horizons.cgi or use telnet to ssd.jpl.nasa.gov, port 6775
  2. Select the following options to retrieve the positions (Right Ascension) of the Sun and Moon at 12:00 Noon UTC in astronomical coordinates.
    Ephemeris Type: OBSERVER
    Target Body: Sun [Sol] [10] and Moon [Luna] 301
    Observer Location: Geocentric [500]
    Time Span: Start=2015-06-15 12:00, Stop=2215-07-20 12:00, Step=1 d
    Table Settings: QUANTITIES=2 (RA and DEC); angle format=DEG; extra precision=YES; CSV format=YES

Horizons allows you to download the data in CSV format by FTP. (One can also use other astronomical software that employs a high-accuracy ephemeris.) Then take the difference between the RA of the moon and RA of the sun. Whenever the difference RA(moon) – RA(sun) passes through zero, the conjunction has occurred. If therefore, at 12:00 Noon UTC the difference is positive, a new moon has been born before noon, and that day can be counted as the new day of the Islamic calendar, according to the standard.

Islamic calendar prediction 2015 – 2215 using JPL DE + Matlab

Plotting the difference RA(moon) – RA(sun) at 12:00 Noon UTC each day produces the following graph. Where RA(moon) – RA(sun) is negative, the moon is waning, where RA(moon) – RA(sun) is positive, the moon is waxing. the first noon where RA(moon) – RA(sun) is positive is counted as the first day of the new Islamic month. Below is the prediction for Ramadan 1437 AH: begin on 5 June 2016 (sunset) and end on 4 July 2016 (sunset), in all time zones.

Islamic calendar Ramadan 2016

 

You too can predict the Islamic calendar using Matlab and the Horizons output. First download the data for the sun and moon and unzip. Then follow the instructions below.

Download JPL Horizons Sun and Moon RA and DEC every day at noon 2015-2215 (zipped CSV files)

 

 

1. Import Horizons output

Run the following Matlab code to import the Horizons data files into Matlab variables ra_sun and ra_moon:

%% import data
delimiter = ',';
startRow = 35;
endRow = 73083;
formatSpec = '%s%s%s%s%s%[^\n\r]';

filename = 'luna wld20518.16.txt';
fileID = fopen(filename,'r');
textscan(fileID, '%[^\n\r]', startRow-1, 'ReturnOnError', false);
dataArray = textscan(fileID, formatSpec, endRow-startRow+1, 'Delimiter', delimiter, 'ReturnOnError', false);
fclose(fileID);
date = datetime(dataArray{1});
ra_moon = str2num(char(dataArray{4}));
dec_moon = str2num(char(dataArray{5}));

filename = 'sun wld20518.15.txt';
fileID = fopen(filename,'r');
textscan(fileID, '%[^\n\r]', startRow-1, 'ReturnOnError', false);
dataArray = textscan(fileID, formatSpec, endRow-startRow+1, 'Delimiter', delimiter, 'ReturnOnError', false);
fclose(fileID);
date = datetime(dataArray{1});
ra_sun = str2num(char(dataArray{4}));
dec_sun = str2num(char(dataArray{5}));

2. Calculate relative right ascension, new moon dates and Islamic month order

ra_rel = angle(exp(1i*(ra_moon-ra_sun)/180*pi))/pi*180;

waxing = sign(double(ra_rel>=0));
moonborn = find([0;diff(waxing)]>0);
moonfull = find([0;diff(waxing)]<0);
Islamic_month_begins_at_sunset_of_Gregorian_date = date(moonborn);
ra_rel(moonfull) = NaN;
months = {'Muharram', 'Safar', 'Rabi'' I', 'Rabi'' II', 'Jumada I', 'Jumada II', 'Rajab', 'Sha''ban', 'Ramadan', 'Shawwal', 'Dhu al-Qa''dah', 'Dhu al-Hijjah'}';
newmonth = mod((1:length(Islamic_month_begins_at_sunset_of_Gregorian_date))+7,12)+1;
Islamic_month = months(newmonth);

3. Plot calendar

figure
plot(date,ra_rel)
hold on
plot(Islamic_month_begins_at_sunset_of_Gregorian_date,zeros(size(moonborn)),'sk')
ylabel('RA(moon) - RA(sun)')
grid on

4. Write output table (CSV)

monthtable = table(Islamic_month_begins_at_sunset_of_Gregorian_date, Islamic_month);
writetable(monthtable, 'Islamic_months_2015-2215.csv')

Full results

Full results in my separate post.