首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >把一年的节气摊开在圆桌上:一张会算历法会观心的「岁时·观照台」

把一年的节气摊开在圆桌上:一张会算历法会观心的「岁时·观照台」

原创
作者头像
用户12168883
发布于 2026-10-24 11:00:34
发布于 2026-10-24 11:00:34
250
举报

希望每个人心头都有张特别的圆桌,一目了然,该有的季节元素都在。

把一年的节气摊开在圆桌上:一张会算历法的「岁时·观照台」

我的日子我作主。这份网页是我个人王朝的钦天监。 ——作者自述

在线体验:https://seasonal-table.app.workbuddy.host/?sharecode=J2OOZ53R7I

一句话:荆楚岁时记 · 节气消息卦 · 中式清供——一张会算节气的圆桌。


一、起因:案头缺一份能观心的日子表

家里客厅靠阳台一角有张圆桌。它是季节桌——华德福季节桌的路子,叠上《荆楚岁时记》记的本地古俗,再叠一层中式清供。作者是湖北人,四季分明的荆楚故地,《荆楚岁时记》是南朝宗懔在江陵写的,记的本就是湖北这边怎么过节。

这张桌子有个麻烦:它要人记着换。什么时候换、换什么、按什么理由换——全靠翻日历、翻书、翻记忆。节气到了,三伏第几天了,数九到哪一九了,花信是哪一候,今天当令的是哪个消息卦——散在各处,攒不齐。

真正想要的不是"一个日历 App",而是:抬头一眼,今天是什么日子,为什么是这个日子。

于是有了这个东西。1024 这天从 0 做到上线,当天迭代 20+ 版,现版本 v4.9。


二、打开就看到什么

打开是今日:

  • 农历:今日农历年月日,含闰月标注
  • 节气:当前节气、交节时刻、距下一节气天数
  • 物候与花信:这一候的物候、对应的花信风
  • 当令卦:十二消息卦中当令的一卦
  • 月相:当天月相,配一张 SVG 画的月亮
  • 观照语:一段自己写的、配今天的句子

往下是岁时轴——点任一个节气,出来这个节气的古俗、物候,配一张 AI 生成的楚风淡彩图。再往下是节日与佛诞、每周布置单、季节桌小物清单。

家人朋友的纪念日录在私密区,到日子前自动提醒。

不注册、不上传、无后端——打开即用,数据只存在自己浏览器里。


三、三个用心的地方

1. 历法是算出来的,不是写死的

这是整个作品里花时间最多的部分。

农历用 1900—2299 的历表做双向换算(solar2lunar / lunar2solar,配套 leapMonth / leapDays / monthDays / yearDays);节气用寿星公式(termDate / allTerms / currentTerm);三伏按「夏至三庚」推(sanFu,gengAfter 找庚日);数九、建除(jianChu / yuejianTerm)、二十八宿(xiu28)、月相(moonPhaseInfo)、干支(ganzhiY / ganzhiD)、时辰(shichenNow)各有各的算法。复活节、将临期、感恩节这类 externally anchored 的日子(easterOf / advent1 / thanksgiving / mondayOf)也各有算法,并与外部锚点互验。

验证方式:2023—2035 共 4748 天,逐日与万年历口径做 round-trip 校验,全过。连 2033 年闰十一月这道著名历法难题都算对了——农历闰月不是简单规则能推的,2033 是公认的硬骨头,能用算法走对,说明不是蒙的。

2. 文化上做了取舍,不是堆料

做这个东西最容易犯的错,是把能找到的岁时材料全堆上去。堆得越多,越没有立场。

这里的取舍是:

  • 荆楚是主视觉。作者是江陵一带人,《荆楚岁时记》记的正是这里怎么过节,所以古俗以它为主源,配图也是楚风淡彩(24 张,每个节气一张,AI 生成)。
  • 华德福隐去名字。这套东西本来就是从季节桌来的,但名字不挂出来——挂出来就成门派了。米迦勒节保留,改称「秋之勇气」。
  • 西方节日不是一律拒,也不是一律收。判断标准只有一条:是否发自自然、是否通向心识。情人节收了,理由很朴素——它在提醒元宵快到了。

每处古俗都译成今天的话,并且出处小注写明哪些是古人的骨、哪些是今天的话。这条最重要:不能让今天的理解冒充古人的意思。

3. 隐私是设计出来的,不是承诺出来的

家人区整个在 localStorage,代码里零痕迹。页面分享出去、源码摊开给人看,都带不出任何家人数据。

连「复制今日 · 带去问 AI」这个功能,都是打包成一段文本让用户自己粘贴——不代用户发,不代用户问。主体性留在用户手里。

做这条的动机很实在:这是个要放在家庭圆桌上的东西,家里人的生日在里面。只要有一丝可能外泄,这个东西就不该存在。


四、技术实现

  • 单文件 HTML(79,366 字节)+ 24 张 AI 生成的楚风淡彩节气图,零外部依赖、零框架、零构建。一个 index.html 打开就能用,扔到任何静态托管都跑得起来。
  • 历法全手写:农历双向换算、节气、日干支、月相、建除值宿、三伏数九、复活节,每一项都有外部锚点验证。
  • 测试方法:4383 天 × 双环境(正常 / localStorage 被禁)全量渲染回归 + 25 项历法锚点抽查 + 4748 天农历 round-trip + 真 Chromium 渲染、控制台零报错。
    • 双环境这一条是必要的:隐私模式、localStorage 被浏览器策略禁掉的环境下,页面必须照样能看,不能白屏。
  • 由 WorkBuddy(AI 智能体)与人协作完成:人出判断与审美,AI 出算法、回归与文案迭代。

踩到的坑(记录给后来人)

  • 发布平台的链接必须带 sharecode 才能访问,跨页跳转不带就 403。解决办法是给所有内部链接加一段自动补参数的脚本,静态链接和动态生成的链接都要覆盖到。
  • 纯前端意味着没有服务端可以兜底,所有日期边界都得在浏览器里收敛。回归测试用 4383 天(约 12 年)跑全量渲染,就是为了把闰月、闰年、跨年这些边界一次扫干净。

五、人和 AI 是怎么分的

这个作品是人和 AI 一起做的,但分工很清楚:

谁

出什么

人

判断(哪些俗要收、哪些不收)、审美(楚风淡彩的调子、圆桌的排布)、取舍(隐去什么名字、保留什么节日)

AI

算法(历法那一整套)、回归(4383 天 × 双环境跑全量)、文案迭代

一句话:判断权和审美权在人手里,算力和耐烦在 AI 手里。

这一点不是方法论表演。做文化类的东西,最容易出的事是 AI 替你把取舍做了——它什么都能编,编得还挺像。所以哪些古俗能收、哪些不能、哪句是古人的哪句是今天的,这些必须由人来定。而历法算法和 4383 天回归这种活,人做不动,也不该人做。


六、最后

做这张桌子的初衷,不是做一个工具。

是希望每个人案头都有份可以观心的日子表——一目了然,该有的季节元素都在。抬头就知道今天是什么日子,为什么是这个日子。

日子不该只被效率和待办占满。它还有节气、物候、花信、月相,还有古人在这片土地上过这一天的方式。

我的日子我作主。这份网页是我个人王朝的钦天监。

(作者自嘲这句"很 AI"。但话说回来,一个人给自己安一台钦天监,本来就是件挺痛快的事。)

作品名:岁时·观照台 版本:v4.9 · 2026-10-24(1024 程序员节当日从 0 到上线,当天迭代 20+ 版) 在线体验:https://seasonal-table.app.workbuddy.host/?sharecode=J2OOZ53R7I

如果你也有一张圆桌,欢迎打开看看,把不顺手的地方告诉我。

#WorkBuddy #1024程序员节

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 把一年的节气摊开在圆桌上:一张会算历法的「岁时·观照台」
    • 一、起因:案头缺一份能观心的日子表
    • 二、打开就看到什么
    • 三、三个用心的地方
      • 1. 历法是算出来的,不是写死的
      • 2. 文化上做了取舍,不是堆料
      • 3. 隐私是设计出来的,不是承诺出来的
    • 四、技术实现
      • 踩到的坑(记录给后来人)
    • 五、人和 AI 是怎么分的
    • 六、最后
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档