我需要编译一个可以将公历日期转换为玛雅日期的程序。我还需要使用01/01/1970作为参考日期。
以下辅助功能可以正常工作,并且没有错误。
# turns dates into tuples
def 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/1970
def daysPassed(date):
"""
>>> daysPassed('01/01/1970')
0
>>> daysPassed('20-7-1988')
6775
>>> daysPassed('00012+00012+02012')
15686
"""
from datetime import date
tup = 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,总共二十。
绝地无双
相关分类