转换到玛雅历法
识别玛雅长历法的纪元(或起始时间)在儒略日中的日期.
In[1]:=
epoch = JulianDate["Modified",
DateObject[{-3114, 8, 11}, TimeZone -> 0]];
创建玛雅长历法单位转换为儒略日的函数.
In[2]:=
JulianFromMayanLongCount[{baktun_, katun_, tun_, uinal_, kin_}] :=
epoch + 144000*baktun + 7200*katun + 360*tun + 20*uinal + kin
FromJulianDate 可用于测试范例输入.
In[3]:=
example = JulianFromMayanLongCount[{7, 17, 18, 19, 2}]
Out[3]=
In[4]:=
FromJulianDate["Modified", example, TimeZone -> 0]
Out[4]=
创建由玛雅长历法转换为格里高利日期对象的函数.
In[5]:=
GregorianFromMayanLongCount[date_] := DateValue[
FromJulianDate["Modified",
JulianFromMayanLongCount[date],
TimeZone -> 0],
"Day",
DateObject]
In[6]:=
GregorianFromMayanLongCount[{7, 17, 18, 19, 2}]
Out[6]=
创建由儒略日转换为玛雅长历法单位的函数.
In[7]:=
JulianToMayanLongCount[date_] := NumberDecompose[
Floor[date - epoch],
{144000, 7200, 360, 20, 1}
]
JulianDate 可用于诠释任何日期转换为儒略日期,然后数据填充进 JulianToMayanLongCount.
In[8]:=
DateToMayanLongCount[date_] := Block[{$TimeZone = 0},
JulianToMayanLongCount[JulianDate["Modified", date]]
]
函数现在可以接受任何输入日期,并返回相应的玛雅长历法的日期列表.
In[9]:=
DateToMayanLongCount["May 4th, 2015"]
Out[9]=
In[10]:=
DateToMayanLongCount[AbsoluteTime[]]
Out[10]=
In[11]:=
DateToMayanLongCount[Today]
Out[11]=
这两个函数可以用于将日期转化成玛雅长历法或将玛雅长历法转换为其他历法.
In[12]:=
DateToMayanLongCount[{1900, 1, 1}]
Out[12]=
In[13]:=
DateToMayanLongCount[{1900, 1, 1}];
GregorianFromMayanLongCount[%]
Out[13]=