マヤ暦への変換
マヤ長期暦における時代(始まりの日付)をユリウス暦の日付として特定する.
In[1]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_59.png)
epoch = JulianDate["Modified",
DateObject[{-3114, 8, 11}, TimeZone -> 0]];
マヤ長期暦の単位をユリウス暦の日付に変換する関数を作る.
In[2]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_60.png)
JulianFromMayanLongCount[{baktun_, katun_, tun_, uinal_, kin_}] :=
epoch + 144000*baktun + 7200*katun + 360*tun + 20*uinal + kin
FromJulianDateを使って例の入力を判定することができる.
In[3]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_61.png)
example = JulianFromMayanLongCount[{7, 17, 18, 19, 2}]
Out[3]=
![](assets.ja/convert-to-the-mayan-calendar/O_54.png)
In[4]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_62.png)
FromJulianDate["Modified", example, TimeZone -> 0]
Out[4]=
![](assets.ja/convert-to-the-mayan-calendar/O_55.png)
マヤ長期暦からグレゴリオ暦の日付オブジェクトに直接変換する関数を作る.
In[5]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_63.png)
GregorianFromMayanLongCount[date_] := DateValue[
FromJulianDate["Modified",
JulianFromMayanLongCount[date],
TimeZone -> 0],
"Day",
DateObject]
In[6]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_64.png)
GregorianFromMayanLongCount[{7, 17, 18, 19, 2}]
Out[6]=
![](assets.ja/convert-to-the-mayan-calendar/O_56.png)
ユリウス暦の日付からマヤ長期暦の単位に変換する関数を作る.
In[7]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_65.png)
JulianToMayanLongCount[date_] := NumberDecompose[
Floor[date - epoch],
{144000, 7200, 360, 20, 1}
]
JulianDateを使って任意の日付入力をユリウス暦の日付として解釈することができる.解釈された日付はJulianToMayanLongCountの入力として使うことができる.
In[8]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_66.png)
DateToMayanLongCount[date_] := Block[{$TimeZone = 0},
JulianToMayanLongCount[JulianDate["Modified", date]]
]
この関数は,任意の入力日付を取って対応するマヤ長期暦の日付リストを返すようになった.
In[9]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_67.png)
DateToMayanLongCount["May 4th, 2015"]
Out[9]=
![](assets.ja/convert-to-the-mayan-calendar/O_57.png)
In[10]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_68.png)
DateToMayanLongCount[AbsoluteTime[]]
Out[10]=
![](assets.ja/convert-to-the-mayan-calendar/O_58.png)
In[11]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_69.png)
DateToMayanLongCount[Today]
Out[11]=
![](assets.ja/convert-to-the-mayan-calendar/O_59.png)
これら2つの関数を使って,マヤ長期暦との両方向の変換できるようになった.
In[12]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_70.png)
DateToMayanLongCount[{1900, 1, 1}]
Out[12]=
![](assets.ja/convert-to-the-mayan-calendar/O_60.png)
In[13]:=
![Click for copyable input](assets.ja/convert-to-the-mayan-calendar/In_71.png)
DateToMayanLongCount[{1900, 1, 1}];
GregorianFromMayanLongCount[%]
Out[13]=
![](assets.ja/convert-to-the-mayan-calendar/O_61.png)