Python农历库zhdate 及200年农历数据压缩存储方法

zhdate支持农历-公历互相转换、日期加减以及全中文日期生成,内置了1900-2100年的农历数据,仅依赖Python内置模块。该库保存农历数据的方法很巧妙,我当初看源码时就留下了非常深刻的印象。
[农历库为什么使用查表法而不是计算]
农历是由天文观测确定的历法,并非数学周期。以月亮圆缺循环算做一个月,一轮是29天12时44分3秒。于是农历把月份分成大月30天和小月29天,但是这导致了一年是354天,所以又添加了闰月。根据我国当前的农历执行标准,新月的判定以太阳、地球、月亮在地球轨道的夹角180°为据。各种农历算法本质上是计算日月运行轨迹,并且其中很多都不精确。

所以简单做法是直接保存农历数据,与公历(阳历)对应查询。
查表法:将一些事先计算好的结果,存储在数据中,需要时直接查取,节省计算开销。
[zhdate农历库的使用]
zhdate库内置了200年的农历数据,并且数据存储方法非常精妙。
[安装]
pip install zhdate
项目网址
github.com/CutePandaSh/zhdate
[各种例子]

[二百年农历数据的存储方法]
农历年份需要保存的数据❓
1. 闰月的月份
2. 闰月是30天还是29天
3. 每个月是30天还是29天
闰月的月份用整数就能保存;闰月的天数,0/1就可以保存(29或30);每月的天数,保存方法跟闰月相同
以2020年为例:
2020年,闰4月29天。
正月 至 腊月 (0表示29天,1表示30天)
0111 1001 0101

转换之后,200年农历数据,就是个整数列表
之后只要再记录任意一年的春节日期,就可算出200年的公历对应。作者为了减少计算量,直接保存了每年的春节日期。
