HomeChinese Calendar › Lunar to Solar Date Converter

Lunar to Solar Date Converter

Converts a Chinese lunar calendar date (year, month, leap-month flag, day) to the Gregorian date, reporting the weekday, the day's ganzhi (干支) and the length of that lunar month, and validating that the leap month and day exist in that year.

When to use

You know a lunar date such as 八月十五 or 闰六月初一 of a given lunar year and need the Gregorian date (e.g. for a lunar birthday or festival).

Do not use when: You start from a Gregorian date (use lunar-calendar-converter), or you want every festival of a year at once (use chinese-festivals).

Formula

JDN = start of the lunar month (new-moon day at UTC+8) + lunar_day − 1; month numbering per GB/T 33661-2017 (month 11 contains the winter solstice; leap month = first month without a 中气)

Same astronomical calendar core as lunar-calendar-converter, checked against Hong Kong Observatory tables. A leap month that does not exist in the year raises INVALID_PARAMETER; a day beyond the month length raises OUT_OF_RANGE. Traditional calendar/cultural reference calculation; not a prediction, medical, legal or financial advice.

Inputs

ParameterTypeUnitRequiredDescription
lunar_yearintegeryesLunar year number (the year that starts at that year's Chinese New Year), 1900–2100. Range: ≥ 1900, ≤ 2100
lunar_monthintegeryesLunar month number 1 (正月) to 12 (腊月). Range: ≥ 1, ≤ 12
is_leap_monthbooleandefault falsetrue when the date is in the intercalary month of that number (only valid in years that have that leap month).
lunar_dayintegeryesDay of the lunar month, 1–30 (day 30 exists only in 30-day months). Range: ≥ 1, ≤ 30

Outputs

OutputTypeUnitDescription
gregorian_datedateGregorian civil date (China Standard Time).
weekdaystringDay of the week.
day_ganzhistringSexagenary day with pinyin, e.g. 壬寅 (Renyin).
month_daysintegerLength of the requested lunar month (29 or 30).
lunar_date_chinesestringWritten form, e.g. 二〇二六年八月十五.
month_namestringTraditional month name, prefixed 闰 for a leap month.
year_ganzhistringSexagenary year with pinyin, e.g. 丙午 (Bingwu).
zodiacstringZodiac animal of the lunar year.
julian_day_numberintegerJulian Day Number of the Gregorian date.
leap_month_notestringWhich leap month the lunar year has (if any), so a wrong is_leap_month flag can be corrected.

Example

2026 八月十五 (Mid-Autumn Festival): {"lunar_year":2026,"lunar_month":8,"is_leap_month":false,"lunar_day":15}{"gregorian_date":"2026-09-25","weekday":"Friday","month_days":29,"lunar_date_chinese":"二〇二六年八月十五","year_ganzhi":"丙午 (Bingwu)"}

2025 闰六月初一: {"lunar_year":2025,"lunar_month":6,"is_leap_month":true,"lunar_day":1}{"gregorian_date":"2025-07-25","weekday":"Friday","month_days":29,"month_name":"闰六月"}

GET https://tttkmbb.com/api/v1/calculate/lunar-to-solar?lunar_year=2026&lunar_month=8&is_leap_month=false&lunar_day=15

Machine access

Sources

FAQ

What if I set is_leap_month for a year without that leap month?

The conversion is rejected with INVALID_PARAMETER and the hint names the leap month that year actually has (for example 2033 has 闰十一月, starting 2033-12-22) or states that the year has none.

Which year is 'lunar year 2025'?

The year that begins at Chinese New Year 2025-01-29 and ends 2026-02-16; its 腊月 (12th month) therefore falls in January–February 2026 of the Gregorian calendar.

Related calculators