-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathChineseCalendarPatch.wl
83 lines (62 loc) · 2.91 KB
/
ChineseCalendarPatch.wl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
(* ::Package:: *)
System`DateCalendarsDump`$chineseCelestialStems=Characters@"\:7532\:4e59\:4e19\:4e01\:620a\:5df1\:5e9a\:8f9b\:58ec\:7678"
System`DateCalendarsDump`$chineseTerrestrialBranches=Characters@"\:5b50\:4e11\:5bc5\:536f\:8fb0\:5df3\:5348\:672a\:7533\:9149\:620c\:4ea5"
System`DateCalendarsDump`$chineseQuarterNumber = Characters@"\:521d\:4e00\:4e8c\:4e09";
System`DateCalendarsDump`monthList["Chinese"] := {
"\:6b63\:6708", "\:4e8c\:6708", "\:4e09\:6708", "\:56db\:6708", "\:4e94\:6708", "\:516d\:6708", "\:4e03\:6708", "\:516b\:6708",
"\:4e5d\:6708", "\:5341\:6708", "\:51ac\:6708", "\:814a\:6708"
};
System`DateCalendarsDump`chineseYearName[DateCalendarsDump`year_] :=
StringJoin[System`DateCalendarsDump`chineseSexagesimalName @ DateCalendarsDump`year, "\:5e74"]
System`DateCalendarsDump`makeChineseDateString[{DateCalendarsDump`cycle_, DateCalendarsDump`year_, DateCalendarsDump`month_, ___}] :=
StringJoin[
System`DateCalendarsDump`makeChineseDateString @ {DateCalendarsDump`cycle, DateCalendarsDump`year},
" ",
If[System`DateCalendarsDump`leapVariantQ[DateCalendarsDump`month], "\:95f0", ""],
Part[System`DateCalendarsDump`monthList @ "Chinese", System`DateCalendarsDump`leapValue @ DateCalendarsDump`month]
];
System`DateCalendarsDump`makeChineseDateString[{DateCalendarsDump`cycle_}] :=
If[DateCalendarsDump`cycle>=0,
StringJoin[
"\:897f\:5143\:540e\:7b2c ",
ToString@DateCalendarsDump`cycle,
" \:8f6e"
],
StringJoin[
"\:897f\:5143\:524d\:7b2c ",
ToString@-DateCalendarsDump`cycle,
" \:8f6e"
]
];
System`DateCalendarsDump`makeChineseDateString[System`DateCalendarsDump`date:{_, _, _, System`DateCalendarsDump`day_}] :=
StringJoin[
System`DateCalendarsDump`makeChineseDateString@Most@System`DateCalendarsDump`date,
" ",
StringJoin[
System`DateCalendarsDump`makeChineseDayString@#1,
" ",
System`DateCalendarsDump`makeChineseTimeString@#2
]&@@MixedFractionParts@System`DateCalendarsDump`day
];
System`DateCalendarsDump`makeChineseTimeString[System`DateCalendarsDump`time_Real?NonNegative] :=
StringJoin[
System`DateCalendarsDump`$chineseTerrestrialBranches[[#1 + 1]],
"\:65f6 ",
If[#2 >= 0.5, "\:6b63", "\:521d"],
System`DateCalendarsDump`$chineseQuarterNumber[[Mod[Floor[8#2], 4] + 1]],
"\:523b"
]&@@MixedFractionParts@Mod[12System`DateCalendarsDump`time + 0.5, 12]
System`DateCalendarsDump`makeChineseTimeString[System`DateCalendarsDump`time_] := $Failed
System`DateCalendarsDump`makeChineseDayString[System`DateCalendarsDump`day_Integer?NonNegative] :=
Which[
System`DateCalendarsDump`day <= 9,
"\:521d"<>IntegerName[System`DateCalendarsDump`day + 1, "Chinese"],
System`DateCalendarsDump`day <= 18,
IntegerName[System`DateCalendarsDump`day + 1, "Chinese"],
System`DateCalendarsDump`day <= 28,
"\:5eff"<>IntegerName[System`DateCalendarsDump`day - 19, "Chinese"],
System`DateCalendarsDump`day == 29,
"\:4e09\:5341",
True,
$Failed
]