大家好,这里是阿曲。
我在 Obsidian 里记录了不少和“人”相关的长期信息,其中生日是一个绕不开但又一直不太好处理的部分——尤其是按农历计算、还可能遇到闰月的生日。
现实中我们记生日很自然,但一旦放进 Obsidian,就会遇到几个实际问题:
- 农历日期本身 无法直接排序、筛选、计算
- 闰月年份并不是年年都有,手算非常容易出错
- 有时只想知道“下一次生日是哪天”
- 有时又希望 提前把未来很多年的生日提醒一次性算好
这也是我写这个插件的直接动机。
插件做的事情(以及为什么这么设计)
Lunar Solar Sync 的核心目标非常明确:
在 Obsidian 中,把“农历生日”转换成可计算、可管理的公历日期属性。
它不是日历插件,也不负责提醒功能,而是专注解决一件事:
让农历信息能够真正进入 Obsidian 的“属性体系”。
为什么不单独“为农历做一整套插件”?
还有一个非常重要的设计原因,和 Obsidian 最近推出的 数据库(Base)功能有关。
现在 Obsidian 的很多新能力,都是建立在「笔记属性」之上的:
- 数据库视图
- 排序、筛选
- 各种社区插件对日期字段的处理
- 未来可能出现的更多自动化能力
因此我选择的思路是:
不为农历重新发明一套系统,而是把农历“翻译”为 Obsidian 能理解的公历属性。
这样做的好处是:
- 一旦农历被转换为标准的日期属性
- 就可以直接享受 整个 Obsidian 生态中,所有和日期相关的插件与功能
- 无需为农历单独维护一套生态
一个更长远的考虑:向未来兼容
我在设计这个插件时,其实刻意避免了一件事:
把用户“锁死”在某一个插件或实现方式里。
如果我选择:
- 为农历单独设计一整套插件体系
- 或者做一个高度定制、不可迁移的实现
那么一旦:
- 我停止维护
- 或者未来社区里出现了更好的解决方案
用户就不得不:
- 重构笔记结构
- 迁移数据
- 甚至放弃原有的记录方式
这在我看来,其实是违背了 Obsidian「以文件为核心」的理念。
而现在这种做法是:
- 农历信息依然是纯文本、可读的属性
- 公历结果是标准日期属性
- 插件只是一个“转换器”,而不是“控制器”
哪怕未来你不用这个插件了:
- 你的笔记依然是干净、可理解、可迁移的
- 也能无缝接入新的数据库能力或其他插件
为什么会有两种输出模式?
插件目前提供 单属性模式 和 展开属性模式,并不是为了复杂,而是源于两类真实需求。
单属性模式:只关心下一次生日
有些人只需要一个答案:
“下一年的生日,对应的公历日期是什么?”
这种情况下:
- 只生成一个明确的公历日期字段
- 方便查看、排序、快速确认
- 不增加额外复杂度
展开属性模式:提前管理未来多年的生日
但也有一些人(包括我自己)希望:
- 一次性生成未来很多年的生日日期
- 用于提醒、年度回顾、人物关系管理
- 或配合数据库 / Dataview 做长期规划
因此插件支持:
- 根据同一个农历生日,展开生成多个年份的公历日期
- 年份数量、字段命名和格式都可配置
为什么闰月要设计成三种处理模式?
这是我在设计中花时间最多的一部分。
现实情况是:
不同的人,对闰月生日的理解和过法,真的完全不同。
严格闰月模式
一些比较传统的老人,是严格按照农历是否存在闰月来过生日的:
- 有闰月,才在闰月过
- 没有闰月,就不过对应的农历生日
因此插件提供了 严格闰月模式,用于真实还原这种情况。
向前折算 / 向后折算模式
但更多人其实是:
- 没有闰月 → 按上一个月过
- 或 按下一个月过
比如:
- 生日是 1999 年闰二月
- 后面二十多年都没有闰二月
- 那么就每年 按二月过生日
这是现实中最常见的一种做法,所以插件提供了:
- 向前折算
- 向后折算
主要是给那些 每年都希望“照样过农历生日” 的人准备的。
为什么支持“单笔记配置闰月策略”?
因为你在管理的,往往不是一个人。
- 爷爷:严格闰月
- 父母:向前折算
- 朋友:向后折算
所以插件的设计是:
- 支持全局默认闰月策略
- 也支持在 单个笔记中,为某一个人单独指定
闰月的处理方式,是跟着“人”走的,而不是跟着系统走的。
当前已实现的功能(基于 README)
- 农历 → 公历属性转换
- 支持闰月标记(“闰”)
- 多种闰月策略
- 单笔记策略覆盖
- 单笔记 / 批量命令
- 灵活的字段与日期格式配置
插件不会自动修改内容,只在你明确执行命令时写入结果。
当前状态 & 想听听大家的想法
- 插件目前 尚未上架 Obsidian 社区市场
- 需要手动安装(README 中有说明)
- 功能刻意保持克制,核心关注点只有一个:
如何让“农历生日”在 Obsidian 的属性与数据库体系中长期可用。
也很想听听大家:
- 你是怎么在 Obsidian 里管理生日的?
- 你是否也在用数据库 / Base?
- 你对闰月的真实处理方式是什么?
- 你是否希望它能更好地融入现有的日期生态?
最后
这个插件对我来说,是一个面向长期、面向未来的工具。
它不试图成为中心,而只是让农历能够进入 Obsidian 的核心能力之中。
如果你也认同这种思路,欢迎一起交流、讨论、拍砖。
阿曲
(一个希望农历也能“融入未来”的 Obsidian 用户)
GitHub: