插件分享 |农历转换器 Lunar Solar Sync:将属性中的农历转换为公历

大家好,这里是阿曲。

我在 Obsidian 里记录了不少和“人”相关的长期信息,其中生日是一个绕不开但又一直不太好处理的部分——尤其是按农历计算、还可能遇到闰月的生日。

现实中我们记生日很自然,但一旦放进 Obsidian,就会遇到几个实际问题:

  • 农历日期本身 无法直接排序、筛选、计算
  • 闰月年份并不是年年都有,手算非常容易出错
  • 有时只想知道“下一次生日是哪天”
  • 有时又希望 提前把未来很多年的生日提醒一次性算好

这也是我写这个插件的直接动机。


插件做的事情(以及为什么这么设计)

Lunar Solar Sync 的核心目标非常明确:

在 Obsidian 中,把“农历生日”转换成可计算、可管理的公历日期属性。

它不是日历插件,也不负责提醒功能,而是专注解决一件事:
让农历信息能够真正进入 Obsidian 的“属性体系”。


为什么不单独“为农历做一整套插件”?

还有一个非常重要的设计原因,和 Obsidian 最近推出的 数据库(Base)功能有关。

现在 Obsidian 的很多新能力,都是建立在「笔记属性」之上的

  • 数据库视图
  • 排序、筛选
  • 各种社区插件对日期字段的处理
  • 未来可能出现的更多自动化能力

因此我选择的思路是:

不为农历重新发明一套系统,而是把农历“翻译”为 Obsidian 能理解的公历属性。

这样做的好处是:

  • 一旦农历被转换为标准的日期属性
  • 就可以直接享受 整个 Obsidian 生态中,所有和日期相关的插件与功能
  • 无需为农历单独维护一套生态

一个更长远的考虑:向未来兼容

我在设计这个插件时,其实刻意避免了一件事:

把用户“锁死”在某一个插件或实现方式里。

如果我选择:

  • 为农历单独设计一整套插件体系
  • 或者做一个高度定制、不可迁移的实现

那么一旦:

  • 我停止维护
  • 或者未来社区里出现了更好的解决方案

用户就不得不:

  • 重构笔记结构
  • 迁移数据
  • 甚至放弃原有的记录方式

这在我看来,其实是违背了 Obsidian「以文件为核心」的理念

而现在这种做法是:

  • 农历信息依然是纯文本、可读的属性
  • 公历结果是标准日期属性
  • 插件只是一个“转换器”,而不是“控制器”

哪怕未来你不用这个插件了:

  • 你的笔记依然是干净、可理解、可迁移的
  • 也能无缝接入新的数据库能力或其他插件

为什么会有两种输出模式?

插件目前提供 单属性模式展开属性模式,并不是为了复杂,而是源于两类真实需求。

:green_circle: 单属性模式:只关心下一次生日

有些人只需要一个答案:

“下一年的生日,对应的公历日期是什么?”

这种情况下:

  • 只生成一个明确的公历日期字段
  • 方便查看、排序、快速确认
  • 不增加额外复杂度

:large_blue_circle: 展开属性模式:提前管理未来多年的生日

但也有一些人(包括我自己)希望:

  • 一次性生成未来很多年的生日日期
  • 用于提醒、年度回顾、人物关系管理
  • 或配合数据库 / Dataview 做长期规划

因此插件支持:

  • 根据同一个农历生日,展开生成多个年份的公历日期
  • 年份数量、字段命名和格式都可配置

为什么闰月要设计成三种处理模式?

这是我在设计中花时间最多的一部分。

现实情况是:
不同的人,对闰月生日的理解和过法,真的完全不同。

:one: 严格闰月模式

一些比较传统的老人,是严格按照农历是否存在闰月来过生日的

  • 有闰月,才在闰月过
  • 没有闰月,就不过对应的农历生日

因此插件提供了 严格闰月模式,用于真实还原这种情况。


:two: 向前折算 / 向后折算模式

但更多人其实是:

  • 没有闰月 → 按上一个月过
  • 按下一个月过

比如:

  • 生日是 1999 年闰二月
  • 后面二十多年都没有闰二月
  • 那么就每年 按二月过生日

这是现实中最常见的一种做法,所以插件提供了:

  • 向前折算
  • 向后折算

主要是给那些 每年都希望“照样过农历生日” 的人准备的。


:three: 为什么支持“单笔记配置闰月策略”?

因为你在管理的,往往不是一个人。

  • 爷爷:严格闰月
  • 父母:向前折算
  • 朋友:向后折算

所以插件的设计是:

  • 支持全局默认闰月策略
  • 也支持在 单个笔记中,为某一个人单独指定

闰月的处理方式,是跟着“人”走的,而不是跟着系统走的。


当前已实现的功能(基于 README)

  • 农历 → 公历属性转换
  • 支持闰月标记(“闰”)
  • 多种闰月策略
  • 单笔记策略覆盖
  • 单笔记 / 批量命令
  • 灵活的字段与日期格式配置

插件不会自动修改内容,只在你明确执行命令时写入结果。


当前状态 & 想听听大家的想法

  • 插件目前 尚未上架 Obsidian 社区市场
  • 需要手动安装(README 中有说明)
  • 功能刻意保持克制,核心关注点只有一个:

如何让“农历生日”在 Obsidian 的属性与数据库体系中长期可用。

也很想听听大家:

  • 你是怎么在 Obsidian 里管理生日的?
  • 你是否也在用数据库 / Base?
  • 你对闰月的真实处理方式是什么?
  • 你是否希望它能更好地融入现有的日期生态?

最后

这个插件对我来说,是一个面向长期、面向未来的工具
它不试图成为中心,而只是让农历能够进入 Obsidian 的核心能力之中。

如果你也认同这种思路,欢迎一起交流、讨论、拍砖。

阿曲
(一个希望农历也能“融入未来”的 Obsidian 用户)

GitHub:

1 个赞