Wolfram言語

単位と日付

マヤ暦への変換

マヤ長期暦における時代(始まりの日付)をユリウス暦の日付として特定する.

In[1]:=
Click for copyable input
epoch = JulianDate["Modified", DateObject[{-3114, 8, 11}, TimeZone -> 0]];

マヤ長期暦の単位をユリウス暦の日付に変換する関数を作る.

In[2]:=
Click for copyable input
JulianFromMayanLongCount[{baktun_, katun_, tun_, uinal_, kin_}] := epoch + 144000*baktun + 7200*katun + 360*tun + 20*uinal + kin

FromJulianDateを使って例の入力を判定することができる.

In[3]:=
Click for copyable input
example = JulianFromMayanLongCount[{7, 17, 18, 19, 2}]
Out[3]=
In[4]:=
Click for copyable input
FromJulianDate["Modified", example, TimeZone -> 0]
Out[4]=

マヤ長期暦からグレゴリオ暦の日付オブジェクトに直接変換する関数を作る.

In[5]:=
Click for copyable input
GregorianFromMayanLongCount[date_] := DateValue[ FromJulianDate["Modified", JulianFromMayanLongCount[date], TimeZone -> 0], "Day", DateObject]
In[6]:=
Click for copyable input
GregorianFromMayanLongCount[{7, 17, 18, 19, 2}]
Out[6]=

ユリウス暦の日付からマヤ長期暦の単位に変換する関数を作る.

In[7]:=
Click for copyable input
JulianToMayanLongCount[date_] := NumberDecompose[ Floor[date - epoch], {144000, 7200, 360, 20, 1} ]

JulianDateを使って任意の日付入力をユリウス暦の日付として解釈することができる.解釈された日付はJulianToMayanLongCountの入力として使うことができる.

In[8]:=
Click for copyable input
DateToMayanLongCount[date_] := Block[{$TimeZone = 0}, JulianToMayanLongCount[JulianDate["Modified", date]] ]

この関数は,任意の入力日付を取って対応するマヤ長期暦の日付リストを返すようになった.

In[9]:=
Click for copyable input
DateToMayanLongCount["May 4th, 2015"]
Out[9]=
In[10]:=
Click for copyable input
DateToMayanLongCount[AbsoluteTime[]]
Out[10]=
In[11]:=
Click for copyable input
DateToMayanLongCount[Today]
Out[11]=

これら2つの関数を使って,マヤ長期暦との両方向の変換できるようになった.

In[12]:=
Click for copyable input
DateToMayanLongCount[{1900, 1, 1}]
Out[12]=
In[13]:=
Click for copyable input
DateToMayanLongCount[{1900, 1, 1}]; GregorianFromMayanLongCount[%]
Out[13]=

関連する例

de en es fr ko pt-br ru zh