forked from githubdulong/Script
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCalendar.scriptable
More file actions
12 lines (11 loc) · 23.2 KB
/
Copy pathCalendar.scriptable
File metadata and controls
12 lines (11 loc) · 23.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
{
"always_run_in_app" : false,
"icon" : {
"color" : "deep-purple",
"glyph" : "cogs"
},
"name" : "Calendar",
"script" : "\n\/*\n * Author: 2Ya\n * Github: https:\/\/github.com\/dompling\n * 本脚本使用了@Gideon_Senku的Env\n *\/\n\nclass Calendar {\n lunarInfo = [\n 0x04bd8,\n 0x04ae0,\n 0x0a570,\n 0x054d5,\n 0x0d260,\n 0x0d950,\n 0x16554,\n 0x056a0,\n 0x09ad0,\n 0x055d2,\n 0x04ae0,\n 0x0a5b6,\n 0x0a4d0,\n 0x0d250,\n 0x1d255,\n 0x0b540,\n 0x0d6a0,\n 0x0ada2,\n 0x095b0,\n 0x14977,\n 0x04970,\n 0x0a4b0,\n 0x0b4b5,\n 0x06a50,\n 0x06d40,\n 0x1ab54,\n 0x02b60,\n 0x09570,\n 0x052f2,\n 0x04970,\n 0x06566,\n 0x0d4a0,\n 0x0ea50,\n 0x06e95,\n 0x05ad0,\n 0x02b60,\n 0x186e3,\n 0x092e0,\n 0x1c8d7,\n 0x0c950,\n 0x0d4a0,\n 0x1d8a6,\n 0x0b550,\n 0x056a0,\n 0x1a5b4,\n 0x025d0,\n 0x092d0,\n 0x0d2b2,\n 0x0a950,\n 0x0b557,\n 0x06ca0,\n 0x0b550,\n 0x15355,\n 0x04da0,\n 0x0a5b0,\n 0x14573,\n 0x052b0,\n 0x0a9a8,\n 0x0e950,\n 0x06aa0,\n 0x0aea6,\n 0x0ab50,\n 0x04b60,\n 0x0aae4,\n 0x0a570,\n 0x05260,\n 0x0f263,\n 0x0d950,\n 0x05b57,\n 0x056a0,\n 0x096d0,\n 0x04dd5,\n 0x04ad0,\n 0x0a4d0,\n 0x0d4d4,\n 0x0d250,\n 0x0d558,\n 0x0b540,\n 0x0b6a0,\n 0x195a6,\n 0x095b0,\n 0x049b0,\n 0x0a974,\n 0x0a4b0,\n 0x0b27a,\n 0x06a50,\n 0x06d40,\n 0x0af46,\n 0x0ab60,\n 0x09570,\n 0x04af5,\n 0x04970,\n 0x064b0,\n 0x074a3,\n 0x0ea50,\n 0x06b58,\n 0x055c0,\n 0x0ab60,\n 0x096d5,\n 0x092e0,\n 0x0c960,\n 0x0d954,\n 0x0d4a0,\n 0x0da50,\n 0x07552,\n 0x056a0,\n 0x0abb7,\n 0x025d0,\n 0x092d0,\n 0x0cab5,\n 0x0a950,\n 0x0b4a0,\n 0x0baa4,\n 0x0ad50,\n 0x055d9,\n 0x04ba0,\n 0x0a5b0,\n 0x15176,\n 0x052b0,\n 0x0a930,\n 0x07954,\n 0x06aa0,\n 0x0ad50,\n 0x05b52,\n 0x04b60,\n 0x0a6e6,\n 0x0a4e0,\n 0x0d260,\n 0x0ea65,\n 0x0d530,\n 0x05aa0,\n 0x076a3,\n 0x096d0,\n 0x04afb,\n 0x04ad0,\n 0x0a4d0,\n 0x1d0b6,\n 0x0d250,\n 0x0d520,\n 0x0dd45,\n 0x0b5a0,\n 0x056d0,\n 0x055b2,\n 0x049b0,\n 0x0a577,\n 0x0a4b0,\n 0x0aa50,\n 0x1b255,\n 0x06d20,\n 0x0ada0,\n 0x14b63,\n 0x09370,\n 0x049f8,\n 0x04970,\n 0x064b0,\n 0x168a6,\n 0x0ea50,\n 0x06b20,\n 0x1a6c4,\n 0x0aae0,\n 0x0a2e0,\n 0x0d2e3,\n 0x0c960,\n 0x0d557,\n 0x0d4a0,\n 0x0da50,\n 0x05d55,\n 0x056a0,\n 0x0a6d0,\n 0x055d4,\n 0x052d0,\n 0x0a9b8,\n 0x0a950,\n 0x0b4a0,\n 0x0b6a6,\n 0x0ad50,\n 0x055a0,\n 0x0aba4,\n 0x0a5b0,\n 0x052b0,\n 0x0b273,\n 0x06930,\n 0x07337,\n 0x06aa0,\n 0x0ad50,\n 0x14b55,\n 0x04b60,\n 0x0a570,\n 0x054e4,\n 0x0d160,\n 0x0e968,\n 0x0d520,\n 0x0daa0,\n 0x16aa6,\n 0x056d0,\n 0x04ae0,\n 0x0a9d4,\n 0x0a2d0,\n 0x0d150,\n 0x0f252,\n 0x0d520,\n ];\n solarMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n Gan = [\n \"\\u7532\",\n \"\\u4e59\",\n \"\\u4e19\",\n \"\\u4e01\",\n \"\\u620a\",\n \"\\u5df1\",\n \"\\u5e9a\",\n \"\\u8f9b\",\n \"\\u58ec\",\n \"\\u7678\",\n ];\n Zhi = [\n \"\\u5b50\",\n \"\\u4e11\",\n \"\\u5bc5\",\n \"\\u536f\",\n \"\\u8fb0\",\n \"\\u5df3\",\n \"\\u5348\",\n \"\\u672a\",\n \"\\u7533\",\n \"\\u9149\",\n \"\\u620c\",\n \"\\u4ea5\",\n ];\n Animals = [\n \"\\u9f20\",\n \"\\u725b\",\n \"\\u864e\",\n \"\\u5154\",\n \"\\u9f99\",\n \"\\u86c7\",\n \"\\u9a6c\",\n \"\\u7f8a\",\n \"\\u7334\",\n \"\\u9e21\",\n \"\\u72d7\",\n \"\\u732a\",\n ];\n solarTerm = [\n \"\\u5c0f\\u5bd2\",\n \"\\u5927\\u5bd2\",\n \"\\u7acb\\u6625\",\n \"\\u96e8\\u6c34\",\n \"\\u60ca\\u86f0\",\n \"\\u6625\\u5206\",\n \"\\u6e05\\u660e\",\n \"\\u8c37\\u96e8\",\n \"\\u7acb\\u590f\",\n \"\\u5c0f\\u6ee1\",\n \"\\u8292\\u79cd\",\n \"\\u590f\\u81f3\",\n \"\\u5c0f\\u6691\",\n \"\\u5927\\u6691\",\n \"\\u7acb\\u79cb\",\n \"\\u5904\\u6691\",\n \"\\u767d\\u9732\",\n \"\\u79cb\\u5206\",\n \"\\u5bd2\\u9732\",\n \"\\u971c\\u964d\",\n \"\\u7acb\\u51ac\",\n \"\\u5c0f\\u96ea\",\n \"\\u5927\\u96ea\",\n \"\\u51ac\\u81f3\",\n ];\n sTermInfo = [\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf97c3598082c95f8c965cc920f\",\n \"97bd0b06bdb0722c965ce1cfcc920f\",\n \"b027097bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf97c359801ec95f8c965cc920f\",\n \"97bd0b06bdb0722c965ce1cfcc920f\",\n \"b027097bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf97c359801ec95f8c965cc920f\",\n \"97bd0b06bdb0722c965ce1cfcc920f\",\n \"b027097bd097c36b0b6fc9274c91aa\",\n \"9778397bd19801ec9210c965cc920e\",\n \"97b6b97bd19801ec95f8c965cc920f\",\n \"97bd09801d98082c95f8e1cfcc920f\",\n \"97bd097bd097c36b0b6fc9210c8dc2\",\n \"9778397bd197c36c9210c9274c91aa\",\n \"97b6b97bd19801ec95f8c965cc920e\",\n \"97bd09801d98082c95f8e1cfcc920f\",\n \"97bd097bd097c36b0b6fc9210c8dc2\",\n \"9778397bd097c36c9210c9274c91aa\",\n \"97b6b97bd19801ec95f8c965cc920e\",\n \"97bcf97c3598082c95f8e1cfcc920f\",\n \"97bd097bd097c36b0b6fc9210c8dc2\",\n \"9778397bd097c36c9210c9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf97c3598082c95f8c965cc920f\",\n \"97bd097bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf97c3598082c95f8c965cc920f\",\n \"97bd097bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf97c359801ec95f8c965cc920f\",\n \"97bd097bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf97c359801ec95f8c965cc920f\",\n \"97bd097bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf97c359801ec95f8c965cc920f\",\n \"97bd097bd07f595b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9210c8dc2\",\n \"9778397bd19801ec9210c9274c920e\",\n \"97b6b97bd19801ec95f8c965cc920f\",\n \"97bd07f5307f595b0b0bc920fb0722\",\n \"7f0e397bd097c36b0b6fc9210c8dc2\",\n \"9778397bd097c36c9210c9274c920e\",\n \"97b6b97bd19801ec95f8c965cc920f\",\n \"97bd07f5307f595b0b0bc920fb0722\",\n \"7f0e397bd097c36b0b6fc9210c8dc2\",\n \"9778397bd097c36c9210c9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bd07f1487f595b0b0bc920fb0722\",\n \"7f0e397bd097c36b0b6fc9210c8dc2\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf7f1487f595b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf7f1487f595b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf7f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c965cc920e\",\n \"97bcf7f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd07f595b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b97bd19801ec9210c9274c920e\",\n \"97bcf7f0e47f531b0b0bb0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"9778397bd097c36b0b6fc9210c91aa\",\n \"97b6b97bd197c36c9210c9274c920e\",\n \"97bcf7f0e47f531b0b0bb0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"9778397bd097c36b0b6fc9210c8dc2\",\n \"9778397bd097c36c9210c9274c920e\",\n \"97b6b7f0e47f531b0723b0b6fb0722\",\n \"7f0e37f5307f595b0b0bc920fb0722\",\n \"7f0e397bd097c36b0b6fc9210c8dc2\",\n \"9778397bd097c36b0b70c9274c91aa\",\n \"97b6b7f0e47f531b0723b0b6fb0721\",\n \"7f0e37f1487f595b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc9210c8dc2\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f595b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"9778397bd097c36b0b6fc9274c91aa\",\n \"97b6b7f0e47f531b0723b0787b0721\",\n \"7f0e27f0e47f531b0b0bb0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"9778397bd097c36b0b6fc9210c91aa\",\n \"97b6b7f0e47f149b0723b0787b0721\",\n \"7f0e27f0e47f531b0723b0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"9778397bd097c36b0b6fc9210c8dc2\",\n \"977837f0e37f149b0723b0787b0721\",\n \"7f07e7f0e47f531b0723b0b6fb0722\",\n \"7f0e37f5307f595b0b0bc920fb0722\",\n \"7f0e397bd097c35b0b6fc9210c8dc2\",\n \"977837f0e37f14998082b0787b0721\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e37f1487f595b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc9210c8dc2\",\n \"977837f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc920fb0722\",\n \"977837f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd097c35b0b6fc920fb0722\",\n \"977837f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"977837f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"977837f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f149b0723b0787b0721\",\n \"7f0e27f0e47f531b0b0bb0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"977837f0e37f14998082b0723b06bd\",\n \"7f07e7f0e37f149b0723b0787b0721\",\n \"7f0e27f0e47f531b0723b0b6fb0722\",\n \"7f0e397bd07f595b0b0bc920fb0722\",\n \"977837f0e37f14898082b0723b02d5\",\n \"7ec967f0e37f14998082b0787b0721\",\n \"7f07e7f0e47f531b0723b0b6fb0722\",\n \"7f0e37f1487f595b0b0bb0b6fb0722\",\n \"7f0e37f0e37f14898082b0723b02d5\",\n \"7ec967f0e37f14998082b0787b0721\",\n \"7f07e7f0e47f531b0723b0b6fb0722\",\n \"7f0e37f1487f531b0b0bb0b6fb0722\",\n \"7f0e37f0e37f14898082b0723b02d5\",\n \"7ec967f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e37f1487f531b0b0bb0b6fb0722\",\n \"7f0e37f0e37f14898082b072297c35\",\n \"7ec967f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e37f0e37f14898082b072297c35\",\n \"7ec967f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e37f0e366aa89801eb072297c35\",\n \"7ec967f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f149b0723b0787b0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n \"7f0e37f0e366aa89801eb072297c35\",\n \"7ec967f0e37f14998082b0723b06bd\",\n \"7f07e7f0e47f149b0723b0787b0721\",\n \"7f0e27f0e47f531b0723b0b6fb0722\",\n \"7f0e37f0e366aa89801eb072297c35\",\n \"7ec967f0e37f14998082b0723b06bd\",\n \"7f07e7f0e37f14998083b0787b0721\",\n \"7f0e27f0e47f531b0723b0b6fb0722\",\n \"7f0e37f0e366aa89801eb072297c35\",\n \"7ec967f0e37f14898082b0723b02d5\",\n \"7f07e7f0e37f14998082b0787b0721\",\n \"7f07e7f0e47f531b0723b0b6fb0722\",\n \"7f0e36665b66aa89801e9808297c35\",\n \"665f67f0e37f14898082b0723b02d5\",\n \"7ec967f0e37f14998082b0787b0721\",\n \"7f07e7f0e47f531b0723b0b6fb0722\",\n \"7f0e36665b66a449801e9808297c35\",\n \"665f67f0e37f14898082b0723b02d5\",\n \"7ec967f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e36665b66a449801e9808297c35\",\n \"665f67f0e37f14898082b072297c35\",\n \"7ec967f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e26665b66a449801e9808297c35\",\n \"665f67f0e37f1489801eb072297c35\",\n \"7ec967f0e37f14998082b0787b06bd\",\n \"7f07e7f0e47f531b0723b0b6fb0721\",\n \"7f0e27f1487f531b0b0bb0b6fb0722\",\n ];\n nStr1 = [\n \"\\u65e5\",\n \"\\u4e00\",\n \"\\u4e8c\",\n \"\\u4e09\",\n \"\\u56db\",\n \"\\u4e94\",\n \"\\u516d\",\n \"\\u4e03\",\n \"\\u516b\",\n \"\\u4e5d\",\n \"\\u5341\",\n ];\n nStr2 = [\"\\u521d\", \"\\u5341\", \"\\u5eff\", \"\\u5345\"];\n nStr3 = [\n \"\\u6b63\",\n \"\\u4e8c\",\n \"\\u4e09\",\n \"\\u56db\",\n \"\\u4e94\",\n \"\\u516d\",\n \"\\u4e03\",\n \"\\u516b\",\n \"\\u4e5d\",\n \"\\u5341\",\n \"\\u51ac\",\n \"\\u814a\",\n ];\n\n lYearDays = (y) => {\n let i,\n sum = 348;\n for (i = 0x8000; i > 0x8; i >>= 1) {\n sum += this.lunarInfo[y - 1900] & i ? 1 : 0;\n }\n return sum + this.leapDays(y);\n };\n\n leapMonth = (y) => {\n return this.lunarInfo[y - 1900] & 0xf;\n };\n\n leapDays = (y) => {\n if (this.leapMonth(y)) {\n return this.lunarInfo[y - 1900] & 0x10000 ? 30 : 29;\n }\n return 0;\n };\n\n monthDays = (y, m) => {\n if (m > 12 || m < 1) {\n return -1;\n }\n return this.lunarInfo[y - 1900] & (0x10000 >> m) ? 30 : 29;\n };\n\n solarDays = (y, m) => {\n if (m > 12 || m < 1) {\n return -1;\n }\n let ms = m - 1;\n if (ms == 1) {\n return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0 ? 29 : 28;\n } else {\n return this.solarMonth[ms];\n }\n };\n\n toGanZhiYear = (lYear) => {\n let ganKey = (lYear - 3) % 10;\n let zhiKey = (lYear - 3) % 12;\n if (ganKey == 0) ganKey = 10;\n if (zhiKey == 0) zhiKey = 12;\n return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1];\n };\n\n toAstro = (cMonth, cDay) => {\n let s =\n \"\\u9b54\\u7faf\\u6c34\\u74f6\\u53cc\\u9c7c\\u767d\\u7f8a\\u91d1\\u725b\\u53cc\\u5b50\\u5de8\\u87f9\\u72ee\\u5b50\\u5904\\u5973\\u5929\\u79e4\\u5929\\u874e\\u5c04\\u624b\\u9b54\\u7faf\";\n let arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];\n return (\n s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + \"\\u5ea7\"\n );\n };\n\n toGanZhi = (offset) => {\n return this.Gan[offset % 10] + this.Zhi[offset % 12];\n };\n\n getTerm = (y, n) => {\n if (y < 1900 || y > 2100) {\n return -1;\n }\n if (n < 1 || n > 24) {\n return -1;\n }\n let _table = this.sTermInfo[y - 1900];\n let _info = [\n parseInt(\"0x\" + _table.substr(0, 5)).toString(),\n parseInt(\"0x\" + _table.substr(5, 5)).toString(),\n parseInt(\"0x\" + _table.substr(10, 5)).toString(),\n parseInt(\"0x\" + _table.substr(15, 5)).toString(),\n parseInt(\"0x\" + _table.substr(20, 5)).toString(),\n parseInt(\"0x\" + _table.substr(25, 5)).toString(),\n ];\n let _calday = [\n _info[0].substr(0, 1),\n _info[0].substr(1, 2),\n _info[0].substr(3, 1),\n _info[0].substr(4, 2),\n _info[1].substr(0, 1),\n _info[1].substr(1, 2),\n _info[1].substr(3, 1),\n _info[1].substr(4, 2),\n _info[2].substr(0, 1),\n _info[2].substr(1, 2),\n _info[2].substr(3, 1),\n _info[2].substr(4, 2),\n _info[3].substr(0, 1),\n _info[3].substr(1, 2),\n _info[3].substr(3, 1),\n _info[3].substr(4, 2),\n _info[4].substr(0, 1),\n _info[4].substr(1, 2),\n _info[4].substr(3, 1),\n _info[4].substr(4, 2),\n _info[5].substr(0, 1),\n _info[5].substr(1, 2),\n _info[5].substr(3, 1),\n _info[5].substr(4, 2),\n ];\n return parseInt(_calday[n - 1]);\n };\n\n toChinaMonth = (m) => {\n if (m > 12 || m < 1) {\n return -1;\n }\n let s = this.nStr3[m - 1];\n s += \"\\u6708\";\n return s;\n };\n\n toChinaDay = (d) => {\n let s;\n switch (d) {\n case 10:\n s = \"\\u521d\\u5341\";\n break;\n case 20:\n s = \"\\u4e8c\\u5341\";\n break;\n case 30:\n s = \"\\u4e09\\u5341\";\n break;\n default:\n s = this.nStr2[Math.floor(d \/ 10)];\n s += this.nStr1[d % 10];\n }\n return s;\n };\n\n getAnimal = (y) => {\n return this.Animals[(y - 4) % 12];\n };\n\n solar2lunar = (_y, _m, _d) => {\n if (_y < 1900 || _y > 2100) {\n return -1;\n }\n if (_y == 1900 && _m == 1 && _d < 31) {\n return -1;\n }\n let objDate;\n if (!_y) {\n objDate = new Date();\n } else {\n objDate = new Date(_y, parseInt(_m) - 1, _d);\n }\n let i,\n leap = 0,\n temp = 0;\n let y = objDate.getFullYear(),\n m = objDate.getMonth() + 1,\n d = objDate.getDate();\n let offset =\n (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) -\n Date.UTC(1900, 0, 31)) \/\n 86400000;\n for (i = 1900; i < 2101 && offset > 0; i++) {\n temp = this.lYearDays(i);\n offset -= temp;\n }\n if (offset < 0) {\n offset += temp;\n i--;\n }\n let isTodayObj = new Date(),\n isToday = false;\n if (\n isTodayObj.getFullYear() == y &&\n isTodayObj.getMonth() + 1 == m &&\n isTodayObj.getDate() == d\n ) {\n isToday = true;\n }\n let nWeek = objDate.getDay(),\n cWeek = this.nStr1[nWeek];\n if (nWeek == 0) {\n nWeek = 7;\n }\n let year = i;\n leap = this.leapMonth(i);\n let isLeap = false;\n for (i = 1; i < 13 && offset > 0; i++) {\n if (leap > 0 && i == leap + 1 && isLeap == false) {\n --i;\n isLeap = true;\n temp = this.leapDays(year);\n } else {\n temp = this.monthDays(year, i);\n }\n if (isLeap == true && i == leap + 1) {\n isLeap = false;\n }\n offset -= temp;\n }\n if (offset == 0 && leap > 0 && i == leap + 1) {\n if (isLeap) {\n isLeap = false;\n } else {\n isLeap = true;\n --i;\n }\n }\n if (offset < 0) {\n offset += temp;\n --i;\n }\n let month = i;\n let day = offset + 1;\n let sm = m - 1;\n let gzY = this.toGanZhiYear(year);\n let firstNode = this.getTerm(y, m * 2 - 1);\n let secondNode = this.getTerm(y, m * 2);\n let gzM = this.toGanZhi((y - 1900) * 12 + m + 11);\n if (d >= firstNode) {\n gzM = this.toGanZhi((y - 1900) * 12 + m + 12);\n }\n let isTerm = false;\n let Term = null;\n if (firstNode == d) {\n isTerm = true;\n Term = this.solarTerm[m * 2 - 2];\n }\n if (secondNode == d) {\n isTerm = true;\n Term = this.solarTerm[m * 2 - 1];\n }\n let dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) \/ 86400000 + 25567 + 10;\n let gzD = this.toGanZhi(dayCyclical + d - 1);\n let astro = this.toAstro(m, d);\n return {\n lYear: year,\n lMonth: month,\n lDay: day,\n Animal: this.getAnimal(year),\n IMonthCn: (isLeap ? \"\\u95f0\" : \"\") + this.toChinaMonth(month),\n IDayCn: this.toChinaDay(day),\n cYear: y,\n cMonth: m,\n cDay: d,\n gzYear: gzY,\n gzMonth: gzM,\n gzDay: gzD,\n isToday: isToday,\n isLeap: isLeap,\n nWeek: nWeek,\n ncWeek: \"\\u661f\\u671f\" + cWeek,\n isTerm: isTerm,\n Term: Term,\n astro: astro,\n };\n };\n\n lunar2solar = (y, m, d, _isLeapMonth) => {\n let isLeapMonth = !!_isLeapMonth;\n \/\/ let leapOffset = 0;\n let leapMonth = this.leapMonth(y);\n \/\/ let leapDay = this.leapDays(y);\n if (isLeapMonth && leapMonth != m) {\n return -1;\n }\n if ((y == 2100 && m == 12 && d > 1) || (y == 1900 && m == 1 && d < 31)) {\n return -1;\n }\n let day = this.monthDays(y, m);\n let _day = day;\n if (isLeapMonth) {\n _day = this.leapDays(y, m);\n }\n if (y < 1900 || y > 2100 || d > _day) {\n return -1;\n }\n let offset = 0;\n for (let i = 1900; i < y; i++) {\n offset += this.lYearDays(i);\n }\n let leap = 0,\n isAdd = false;\n for (let i = 1; i < m; i++) {\n leap = this.leapMonth(y);\n if (!isAdd) {\n if (leap <= i && leap > 0) {\n offset += this.leapDays(y);\n isAdd = true;\n }\n }\n offset += this.monthDays(y, i);\n }\n if (isLeapMonth) {\n offset += day;\n }\n let stmap = Date.UTC(1900, 1, 30, 0, 0, 0);\n let calObj = new Date((offset + d - 31) * 86400000 + stmap);\n let cY = calObj.getUTCFullYear();\n let cM = calObj.getUTCMonth() + 1;\n let cD = calObj.getUTCDate();\n return this.solar2lunar(cY, cM, cD);\n };\n\n birthday = (config) => {\n let y = parseInt(config.year),\n m = parseInt(config.month),\n d = parseInt(config.day),\n nongli = config.nongli,\n isLeapMonth = config.isLeapMonth;\n let date;\n let now = new Date();\n if (nongli) {\n let now_d = this.solar2lunar(\n now.getFullYear(),\n now.getMonth() + 1,\n now.getDate()\n );\n let now_year = now_d.lYear;\n date = this.birthBylunar(now_year, m, d, isLeapMonth);\n if (this.daysBetween(date) <= 0) {\n now_year++;\n date = this.birthBylunar(now_year, m, d, isLeapMonth);\n }\n } else {\n let now_year = now.getFullYear();\n date = this.solar2lunar(now_year, m, d);\n if (this.daysBetween(date) <= 0) {\n now_year++;\n date = this.solar2lunar(now_year, m, d);\n }\n }\n let result = [date, this.daysBetween(date)];\n return result;\n };\n\n birthBylunar = (y, m, d, isLeapMonth) => {\n if (isLeapMonth && this.leapMonth(y) == m) {\n d = this.lunar2solar(y, m, d, isLeapMonth);\n } else {\n d = this.lunar2solar(y, m, d, false);\n }\n return d;\n };\n\n daysBetween = (d) => {\n let now = new Date();\n let date = new Date(d.cYear, d.cMonth - 1, d.cDay);\n return parseInt((date.getTime() - now.getTime()) \/ (24 * 3600 * 1000));\n };\n\n getdata = async (key) => {\n const url = `http:\/\/${this.prefix}\/query\/boxdata`;\n const boxdata = await $.get({ url });\n if (boxdata.datas[key]) {\n return boxdata.datas[key];\n } else {\n return undefined;\n }\n };\n\n getAstroToEmoji = (astro) => {\n const data = {\n 白羊座: \"♈\",\n 金牛座: \"♉\",\n 双子座: \"♊\",\n 巨蟹座: \"♋\",\n 狮子座: \"♌\",\n 处女座: \"♍\",\n 天秤座: \"♎\",\n 天蝎座: \"♏\",\n 射手座: \"♐\",\n 摩羯座: \"♑\",\n 水瓶座: \"♒\",\n 双鱼座: \"♓\",\n 蛇夫座: \"⛎\",\n };\n return data[astro] || \"\";\n };\n\n getAnimalZodiacToEmoji = (zodiac) => {\n const data = {\n 鼠: \"🐭\",\n 牛: \"🐂\",\n 虎: \"🐯\",\n 兔: \"🐇\",\n 龙: \"🐲\",\n 蛇: \"🐍\",\n 马: \"🐴\",\n 羊: \"🐑\",\n 猴: \"🐵\",\n 鸡: \"🐔\",\n 狗: \"🐶\",\n 猪: \"🐷\",\n };\n return data[zodiac] || \"\";\n };\n\n verifyTime(date) {\n let dateFormat = \/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$\/;\n return dateFormat.test(date);\n }\n}\nmodule.exports = { Calendar };\n\n\/\/version:",
"share_sheet_inputs" : [
]
}