我需要编译一个可以将公历日期转换为玛雅日期的程序。我还需要使用01/01/1970作为参考日期。以下辅助功能可以正常工作,并且没有错误。# turns dates into tuplesdef dmj(date):""">>> dmj('01/01/1970')(1, 1, 1970)>>> dmj('00012+00012+02012')(12, 12, 2012)"""tup = ()for i in date: if i.isdigit() == False and i != ' ': date = date.replace(i, ' ')number_str = ''for i in date: number_str += i if i == ' ': number = int(number_str) tup += (number,) number_str = ''tup += (int(number_str),)return tup# counts days that have passed since 01/01/1970def daysPassed(date):""">>> daysPassed('01/01/1970')0>>> daysPassed('20-7-1988')6775>>> daysPassed('00012+00012+02012')15686"""from datetime import datetup = dmj(date)begin = date(1970, 1, 1)end = date(tup[2], tup[1], tup[0])passed = abs(end - begin) return passed.days我的想法是先计算自从1970年1月1日这个pictun(长度为20 baktuns)开始以来经过的天数,然后根据给定的日期添加自那时起经过的天数。在玛雅历法中,一天被称为亲属。它们的周期(一个pictun内)如下:20亲= 1小便; 18小便= 1 tun; 20 tun = 1 katun;20 katun = 1 baktun以长计数表示法,1970年1月1日的玛雅日期为'12 .17.16.7.5'。首先写Baktun,然后写katuns,等等。。。玛雅人的日期从0开始。基本上,小便的第一个亲戚是零,最后一个是19,总共二十。
2 回答

绝地无双
TA贡献1946条经验 获得超4个赞
我可能已经找到了一些东西。
>>>mayanDate('15/01/1970')
'12/17/16/8/-1'
显然不可能。-1必须在此处为19,而8必须为7。这似乎太早了一个月。仍不知道为什么01/01/1970在这里仍然正确。不知道那一天有什么特别之处。
添加回答
举报
0/150
提交
取消