67 lines
2.4 KiB
Text
67 lines
2.4 KiB
Text
sacred = {"Imix\[CloseCurlyQuote]", "Ik\[CloseCurlyQuote]",
|
|
"Ak\[CloseCurlyQuote]bal", "K\[CloseCurlyQuote]an", "Chikchan",
|
|
"Kimi", "Manik\[CloseCurlyQuote]", "Lamat", "Muluk", "Ok",
|
|
"Chuwen", "Eb", "Ben", "Hix", "Men",
|
|
"K\[CloseCurlyQuote]ib\[CloseCurlyQuote]", "Kaban",
|
|
"Etz\[CloseCurlyQuote]nab\[CloseCurlyQuote]", "Kawak", "Ajaw"};
|
|
civil = {"Pop", "Wo\[CloseCurlyQuote]", "Sip",
|
|
"Sotz\[CloseCurlyQuote]", "Sek", "Xul", "Yaxk\[CloseCurlyQuote]in",
|
|
"Mol", "Ch\[CloseCurlyQuote]en", "Yax", "Sak\[CloseCurlyQuote]",
|
|
"Keh", "Mak", "K\[CloseCurlyQuote]ank\[CloseCurlyQuote]in",
|
|
"Muwan\[CloseCurlyQuote]", "Pax", "K\[CloseCurlyQuote]ayab",
|
|
"Kumk\[CloseCurlyQuote]u", "Wayeb\[CloseCurlyQuote]"};
|
|
date1 = {2012, 12, 21, 0, 0, 0};
|
|
date2 = {2019, 4, 2, 0, 0, 0};
|
|
|
|
ClearAll[Tzolkin]
|
|
Tzolkin[date_] := Module[{diff, rem, num},
|
|
diff = QuantityMagnitude[DateDifference[date1, date], "Days"];
|
|
rem = Mod[diff, 13];
|
|
If[rem <= 9,
|
|
num = rem + 4
|
|
,
|
|
num = rem - 9
|
|
];
|
|
rem = Mod[diff, 20, 1];
|
|
ToString[num] <> " " <> sacred[[rem]]
|
|
]
|
|
ClearAll[Haab]
|
|
Haab[date_] := Module[{diff, rem, month, last, d},
|
|
diff = QuantityMagnitude[DateDifference[date2, date], "Days"];
|
|
rem = Mod[diff, 365];
|
|
month = civil[[Floor[(rem + 1)/20] + 1]];
|
|
last = 20;
|
|
If[month == Last[civil],
|
|
last = 5
|
|
];
|
|
d = Mod[rem, 20] + 1;
|
|
If[d < last,
|
|
ToString[d] <> " " <> month
|
|
,
|
|
"Chum " <> month
|
|
]
|
|
]
|
|
ClearAll[LongCount]
|
|
LongCount[date_] := Module[{diff, baktun, katun, tun, winal, kin},
|
|
diff = QuantityMagnitude[DateDifference[date1, date], "Days"];
|
|
diff += 13 400 360;
|
|
{baktun, diff} = QuotientRemainder[diff, 400 360];
|
|
{katun, diff} = QuotientRemainder[diff, 20 360];
|
|
{tun, diff} = QuotientRemainder[diff, 360];
|
|
{winal, kin} = QuotientRemainder[diff, 20];
|
|
StringRiffle[ToString /@ {baktun, katun, tun, winal, kin}, "."]
|
|
]
|
|
ClearAll[LordOfTheNight]
|
|
LordOfTheNight[date_] := Module[{diff, rem},
|
|
diff = QuantityMagnitude[DateDifference[date1, date], "Days"];
|
|
rem = Mod[diff, 9, 1];
|
|
"G" <> ToString[rem]
|
|
]
|
|
data = {{2004, 06, 19}, {2012, 12, 18}, {2012, 12, 21}, {2019, 01,
|
|
19}, {2019, 03, 27}, {2020, 02, 29}, {2020, 03, 01}, {2071, 05,
|
|
16}};
|
|
tzolkindata = Tzolkin /@ data;
|
|
haabdata = Haab /@ data;
|
|
longcountdata = LongCount /@ data;
|
|
lotndata = LordOfTheNight /@ data;
|
|
{DateObject /@ data, tzolkindata, haabdata, longcountdata, lotndata} // Transpose // Grid
|