Why precisely today?
Today
The Chinese calendar is a lunisolar calendar. This means that months are determined by the motion of the Moon around the Earth, and years are determined by the motion of the Earth around the Sun.
Months start on the day of the new moon, in the time zone of Beijing. Dates of new moon can be easily computed with the Wolfram Language function NewMoon. This is the date of the next new moon, in my time zone GMT-6:
Months start on the day of the new moon, in the time zone of Beijing. Dates of new moon can be easily computed with the Wolfram Language function NewMoon. This is the date of the next new moon, in my time zone GMT-6:
NewMoon[]
The previous new moon was precisely earlier today:
newmoon=NewMoon[TimeDirection->-1]
This is the official name of the time zone of Beijing:
tz=LocalTimeZone
The new moon is also on January 29 in that time zone:
NewMoon[TimeDirection->-1,TimeZone->tz]
Therefore today is day 1 of a month of the Chinese calendar:
CalendarConvert[Today,"Chinese"]
The year name YĭSìnian literally means the year of Yĭ-Sì (乙巳), and is a notation for years. The first character has 10 variations and the current year is the second variation. The second character has 12 variations, which correspond to the well known 12 zodiac signs (like the Rat, Ox, Tiger, Rabbit, ...), and the current variation Sì (巳) indicates it is the year of Snake. Every year, both characters progress to the next variation. This combination gives a cycle of 60 years.
Today is New Year’s day in the Chinese calendar because that month is the first month in the Chinese calendar. This is how we represent that calendar day in Wolfram Language, in the form {cycle, year, month, day}:
%//InputForm
DateObject[{78, 42, 1, 1}, Day, Chinese]
We are in the 42nd year of the 78th cycle. That gives 77*60+42 = 4662 years since the first year. Therefore the first year was 2025 - 4662 = -2637 . This was the first day of the first cycle:
CalendarData["Chinese","EpochDate"]
%//InputForm
DateObject[{1, 1, 1, 1}, Instant, Chinese, None]
corresponding to this date in the Gregorian calendar:
CalendarConvert[%]
Let’s now find the new moons during the next Chinese year. New moons are numbered by integers, called “lunation numbers”. Today’s new moon is number 310:
LunationNumber[newmoon]
310.
These are the new moons 310 to 323, in our time zone:
FromLunationNumber/@Range[310,323]
,,,,,,,,,,,,,
Now compute the days, in Beijing’s time zone. Note that some days change. For example next new moon will be on February 27 in Chicago, but on February 28 in Beijing:
Table[FromLunationNumber[n,TimeZone->tz,DateGranularity->"Day"],{n,310,323}]
,,,,,,,,,,,,,
Find the corresponding dates in the Chinese calendar:
CalendarConvert[%,"Chinese"]
,,,,,,,,,,,,,
%//InputForm
{DateObject[{78, 42, 1, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 2, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 3, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 4, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 5, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 6, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, LeapVariant[6], 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 7, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 8, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 9, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 10, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 11, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 12, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 43, 1, 1}, Day, Chinese, Asia/Shanghai]}
DateObject[{78, 42, 2, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 3, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 4, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 5, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 6, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, LeapVariant[6], 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 7, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 8, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 9, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 10, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 11, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 42, 12, 1}, Day, Chinese, Asia/Shanghai],
DateObject[{78, 43, 1, 1}, Day, Chinese, Asia/Shanghai]}
We see that they all fall on day 1 of the respective months. We also see that month 6 appears twice. The second is a “leap month”, and it’s needed to synchronize approximately the cycle of lunar months with the cycle of solar years. This is again why the Chinese calendar is called a lunisolar calendar.
CITE THIS NOTEBOOK
CITE THIS NOTEBOOK
Chinese New Year 2025: Lunar-Solar synchronization, new moon timing, and historical cycles
by Jose Martin-Garcia
Wolfram Community, STAFF PICKS, January 29, 2025
https://community.wolfram.com/groups/-/m/t/3367117
by Jose Martin-Garcia
Wolfram Community, STAFF PICKS, January 29, 2025
https://community.wolfram.com/groups/-/m/t/3367117