Lunar calendar and calendar extrapolate birth year
本文最后更新于 1843 天前,其中的信息可能已经有所发展或是发生改变。

今天通过某个事情后,突发奇想,知道某个人的农历和阳历生日后,是不是能推算出他到底是哪一年出生的呢?

当然是可以的!

农历生日是在出生那一年的农历月日,而阳历生日也是在出生的那一年的阳历月日(废话..)但是我们已经进入了社会主义社会,农耕时代早已过去,因此我们最常用的纪日法还是阳历。

基本原理

出生年月日是唯一确定的,由于农历和阳历的计时根本原理上的不同,使得二者通常都是不同步的。能够使得二者在数值上相等都是一种巧合(小概率事件)。而出生日期,农历和阳历是一种唯一的对应关系,只需验证那一年的生日阳历日期和农历日期是否都是属于同一个自然日,就可确定他是那一年出生的。(虽然后面验证后才发现,是不能“确定”的)

程序验证后续

通过测试了几组数据后,其实这样的日子概率在几十年的维度上,概率还是挺大的(估算约5-10%)。但是有着二十年这样的差距,相信凡是见过本人的,都能猜到是结果中的哪一个。

 

 

Python代码

依赖库安装

pip install sxtwl

使用说明

https://pypi.org/project/sxtwl/

import sxtwl
lunar = sxtwl.Lunar()

cnbirth_m = 6
cnbirth_d = 19
#农历月日
birth_m = 7
birth_d = 20
#阳历月日

for i in range(1950,2020):
	cnday = lunar.getDayByLunar(i, cnbirth_m, cnbirth_d)
	#print("Y: " + str(cnday.y) + " M: " + str(cnday.m) + " D: " + str(cnday.d))
	if(cnday.m == birth_m and cnday.d == birth_d):
		print(i)
上一篇
下一篇