Merlion Calendar鱼尾狮万年历

The lunar calendar, worked out properly.农历这件事,算清楚了。

In development · free on the Mac App Store soon开发中 · 即将在 Mac App Store 免费上架 Native macOS app · Requires macOS 14 Sonoma or later · Covers 1900–2100原生 macOS 应用 · 需 macOS 14 Sonoma 或更高版本 · 覆盖 1900–2100 年

A Chinese lunar calendar for the Mac. Gregorian and lunar dates side by side, the twenty-four solar terms, traditional and public holidays, the sexagenary cycle and zodiac — and birthday reminders that follow the lunar calendar rather than a fixed Gregorian date.

一个 Mac 上的农历万年历。公历与农历双显示,二十四节气、 传统节日与公历节日、干支纪年月日与生肖 —— 以及真正按农历重复的 生日提醒,而不是钉死在某个公历日期上。

What it does它能做什么

The calendar日历

  • Gregorian and lunar dates in one grid
  • All twenty-four solar terms, to the minute
  • Traditional festivals and public holidays
  • Sexagenary cycle for year, month and day
  • Zodiac animal for the lunar year
  • Jump to any month from 1900 to 2100
  • Lunar New Year's Eve handled correctly — it is the 29th in some years, the 30th in others
  • 公历与农历同格显示
  • 二十四节气,精确到分
  • 传统节日与公历节日
  • 年、月、日三柱干支
  • 农历年的生肖
  • 1900 至 2100 年任意月份可跳转
  • 除夕不写死日期 —— 有些年是廿九,有些年才是三十

Reminders提醒

  • Birthdays and anniversaries that repeat by the lunar calendar
  • Also plain Gregorian anniversaries
  • Remind on the day, or several days ahead
  • Shows how many days remain, and which anniversary it is
  • Tells you when a date has been shifted, and why
  • 按农历重复的生日与纪念日
  • 也支持普通的公历纪念日
  • 可当天提醒,也可提前若干天
  • 显示还有几天,以及是第几周年
  • 日子被挪动时会明说,并给出理由

The two dates that trip everyone up两个总被算错的日子

A lunar birthday lands on a different Gregorian date every year, so the system calendar's “repeat yearly” can't help. Two cases in particular need an answer, and most apps quietly pick one without telling you:

农历生日对应的公历日子每年都在变,系统日历的「每年重复」帮不上忙。 其中两种情况尤其需要一个明确的答案,而多数应用会悄悄替你选一个、并不告诉你:

Born in a leap month生在闰月

The third day of the leap sixth month exists in only 12 years between 1900 and 2100. You choose: observe it in the ordinary sixth month, observe it only in the years the leap month actually occurs, or always use the ordinary month.

农历闰六月初三,在 1900 到 2100 年 之间只出现 12 次。你可以选:按平六月过、只在真有闰六月的年份过, 或者一律按平月过。

Born on the 30th生在三十

A short lunar month has only 29 days, so the 30th simply isn't there. You choose: fall back to the 29th, or roll forward to the first day of the next month.

农历小月只有廿九天, 根本没有三十这一天。你可以选:退到廿九,或者顺延到次月初一。

Whichever you pick, the list says so in plain words — “this year that month is short, using the 29th” — instead of silently moving the date and leaving you to wonder.

无论选哪种,列表里都会直说 ——「今年这个月是小月,按廿九算」—— 而不是默默挪一天让你困惑。

Where the data comes from数据的来路

Lunar calendar apps tend to claim authority without saying whose. Here is what this one actually did:

农历应用大多宣称「权威」,却不说权威在哪。这个应用实际做的是:

Lunar dates checked day by day农历日期逐日核对 73,384 days73,384 天
Solar term dates vs. the Hong Kong Observatory节气日期对香港天文台 0 discrepancies零偏差
Solar term times vs. the Hong Kong Observatory节气时刻对香港天文台 ≤ 1 minute≤ 1 分钟
Leap month placement, 1900–21001900–2100 闰月位置 all 201 years201 年全对

The lunar table isn't copied from the hard-coded array that circulates online — that data exists in several mutually contradictory versions and can't be checked against anything. It is derived programmatically from the system's own Chinese calendar implementation and can be regenerated at any time. Solar term times are computed astronomically and were compared, term by term, against times published by the Hong Kong Observatory, whose astronomical data comes from the UK's HM Nautical Almanac Office and the US Naval Observatory.

农历表不是抄网上流传的那份硬编码数组 —— 那份数据有好几个互相矛盾的 版本,且无从核对。这里的表由程序从系统自带的中国农历实现推导得出,随时可以重新生成。 节气时刻用天文算法计算,并与香港天文台公布的时刻逐条比对过;后者的天文数据 来自英国皇家海军历书局与美国海军天文台。

Nothing leaves your Mac数据不出你的 Mac

No account, no cloud, no analytics, no tracking, no ads. The app never connects to the network — the calendar and solar term data are built into it. Your anniversaries are stored only on this Mac, inside the app's sandbox container. See the privacy policy.

无账号、无云端、无统计、无追踪、无广告。 应用完全不联网 —— 农历与节气数据都内置在里面。你的纪念日只存在这台 Mac 上, 在应用自己的沙箱容器里。详见隐私政策

Common questions常见问题

Why does it stop at 2100?为什么只到 2100 年?

Because that is where the verified data ends. Beyond it the app returns nothing rather than extrapolating — a plausible-looking wrong date is worse than no date.

因为经过核对的数据到此为止。超出范围应用什么都不返回,而不是外推 —— 一个看起来合理的错误日期,比没有日期更糟。

Which reckoning does the zodiac use?生肖按哪种口径?

The zodiac and the year's sexagenary name change at Lunar New Year, which is what calendars normally show. The year pillar in the sexagenary reading changes at 立春 (Start of Spring) instead, which is the traditional almanac convention — both are shown.

生肖与年份的干支名以正月初一为界,这是日历的通行做法。 而干支三柱里的年柱以立春为界,那是传统黄历的口径 —— 两者都会显示。

Will it come to iPhone?会有 iPhone 版吗?

The iOS, tvOS and watchOS versions are built and share the same calendar engine. They are not on the store yet.

iOS、tvOS 与 watchOS 版本已经做好,与 macOS 版共用同一套换算引擎, 只是还没上架。

I found a wrong date.我发现日期算错了。

Please write in with the Gregorian date and what you expected. Dates are the whole point of this app, and a report with a specific day is the most useful thing you can send.

请把公历日期和你认为正确的结果一起发来。日期正是这个应用的全部意义所在, 一份带具体日子的反馈是最有用的。

Support支持

Email邮箱support@merlionos.dev
Privacy隐私Privacy policy隐私政策
Maker开发者MerlionOS Works