Python中的长计数玛雅日期

我需要编译一个可以将公历日期转换为玛雅日期的程序。我还需要使用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,总共二十。


忽然笑
浏览 212回答 2
2回答

绝地无双

我可能已经找到了一些东西。>>>mayanDate('15/01/1970')'12/17/16/8/-1'显然不可能。-1必须在此处为19,而8必须为7。这似乎太早了一个月。仍不知道为什么01/01/1970在这里仍然正确。不知道那一天有什么特别之处。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python