There will be a blue moon tonight, at 3:45 am CDT:
In[]:=
MoonPhaseDate["MonthlyBlueMoon"]
Out[]=
Sun 31 May 2026 03:45:12GMT-5
This post will show what this means, and how easy it is to find blue moons, and other special phases of the Moon, with Wolfram Language.
Recent versions of Wolfram Language have added several new functions to find and analyze astronomical events, and some of them are fully dedicated to Earth's Moon. For example, the function NewMoon finds the next new moon:
In[]:=
NewMoon[]
Out[]=
Sun 14 Jun 2026 21:54:10GMT-5
and the function FullMoon finds the next full moon, which happens to be in a few hours:
In[]:=
FullMoon[]
Out[]=
Sun 31 May 2026 03:45:12GMT-5
The time from one new moon to the next new moon (or full moon to full moon) is called a "lunation" or "synodic month", and has an average of about 29.5 days:
In[]:=
UnitConvert[Quantity["SynodicMonths"],MixedUnit["DHMS"]]
Out[]=
29
days
12
h
44
min
2.882
s
It can vary a few hours. For example, take all 260 full moons from year 2020 to year 2040:
In[]:=
Length[fullmoons=FindAstroEvent["FullMoon",DateInterval[{{2020},{2040}}]]]
Out[]=
260
We see that during this period the synodic month can vary as much as seven hours from the average, but it is still always between 29 and 30 days:
In[]:=
MinMax[differences=Differences@fullmoons]
Out[]=

29.2807
days
,
29.8251
days

In[]:=
UnitConvert[%-Quantity["SynodicMonths"],"Hours"]
Out[]=

-5.99661
h
,
7.06853
h

In[]:=
ListPlot[EventSeries[differences,{Most@fullmoons}],Filling->Axis]
Out[]=
Gregorian months can have from 28 to 31 days, and therefore it may happen that there are two full moons in the same month. When that happens we say that the second full moon is a "seasonal full moon". This month of May has two full moons (the option TimeDirection -> -1 indicates we want the previous event):
In[]:=
{FullMoon[TimeDirection->-1],FullMoon[]}
Out[]=

Fri 1 May 2026 12:23:10GMT-5
,
Sun 31 May 2026 03:45:12GMT-5

Note that if one of the full moons is very close to the beginning or end of the month, then it might fall in a different month for a different time zone, but it is not the case today.
Monthly blue moons happen every two or three years. The next one will happen on the last day of 2028. Here we tell the function MoonPhaseDate to find the next monthly blue moon after two days from today, so that it does not return the one tonight:
In[]:=
MoonPhaseDate[Today+Quantity[2,"Days"],"MonthlyBlueMoon"]
Out[]=
Sun 31 Dec 2028 11:48:31GMT-5
It turns out there is a completely different definition of "blue moon", called "seasonal blue moon". This is the third blue moon in a season with four full moons. The next one will be next year:
In[]:=
MoonPhaseDate["SeasonalBlueMoon"]
Out[]=
Thu 20 May 2027 05:59:01GMT-5
Let's check that. Compute the beginning and end of spring next year:
In[]:=
springStart=FindAstroEvent["MarchEquinox",DateObject[{2027}]]
Out[]=
Sat 20 Mar 2027 15:24:41GMT-5
In[]:=
springEnd=FindAstroEvent["JuneSolstice",DateObject[{2027}]]
Out[]=
Mon 21 Jun 2027 09:10:50GMT-5
Select the full moons during that season. We see that the third one is seasonal blue moon we obtained before:
In[]:=
Select[fullmoons,Between[{springStart,springEnd}]]
Out[]=

Mon 22 Mar 2027 05:43:47GMT-5
,
Tue 20 Apr 2027 17:27:09GMT-5
,
Thu 20 May 2027 05:59:01GMT-5
,
Fri 18 Jun 2027 19:44:21GMT-5

There are other full moons with traditional names, and Wolfram Language can easily find them. These are the "harvest moon" (the full moon closest to the September equinox) and the "hunter's moon" (the following full moon):
In[]:=
MoonPhaseDate["HarvestMoon"]
Out[]=
Sat 26 Sep 2026 11:49:02GMT-5
In[]:=
MoonPhaseDate["HuntersMoon"]
Out[]=
Sun 25 Oct 2026 23:11:48GMT-5

CITE THIS NOTEBOOK

Blue Moon tonight at 3:45 am CDT​
by Jose Martin-Garcia​
Wolfram Community, STAFF PICKS, May 31, 2026
​https://community.wolfram.com/groups/-/m/t/3724526