date.js 25 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139
  1. export default {
  2. /**
  3. * 农历1900-2100的润大小信息表
  4. * @Array Of Property
  5. * @return Hex
  6. */
  7. lunarInfo: [
  8. 0x04bd8,
  9. 0x04ae0,
  10. 0x0a570,
  11. 0x054d5,
  12. 0x0d260,
  13. 0x0d950,
  14. 0x16554,
  15. 0x056a0,
  16. 0x09ad0,
  17. 0x055d2, //1900-1909
  18. 0x04ae0,
  19. 0x0a5b6,
  20. 0x0a4d0,
  21. 0x0d250,
  22. 0x1d255,
  23. 0x0b540,
  24. 0x0d6a0,
  25. 0x0ada2,
  26. 0x095b0,
  27. 0x14977, //1910-1919
  28. 0x04970,
  29. 0x0a4b0,
  30. 0x0b4b5,
  31. 0x06a50,
  32. 0x06d40,
  33. 0x1ab54,
  34. 0x02b60,
  35. 0x09570,
  36. 0x052f2,
  37. 0x04970, //1920-1929
  38. 0x06566,
  39. 0x0d4a0,
  40. 0x0ea50,
  41. 0x16a95,
  42. 0x05ad0,
  43. 0x02b60,
  44. 0x186e3,
  45. 0x092e0,
  46. 0x1c8d7,
  47. 0x0c950, //1930-1939
  48. 0x0d4a0,
  49. 0x1d8a6,
  50. 0x0b550,
  51. 0x056a0,
  52. 0x1a5b4,
  53. 0x025d0,
  54. 0x092d0,
  55. 0x0d2b2,
  56. 0x0a950,
  57. 0x0b557, //1940-1949
  58. 0x06ca0,
  59. 0x0b550,
  60. 0x15355,
  61. 0x04da0,
  62. 0x0a5b0,
  63. 0x14573,
  64. 0x052b0,
  65. 0x0a9a8,
  66. 0x0e950,
  67. 0x06aa0, //1950-1959
  68. 0x0aea6,
  69. 0x0ab50,
  70. 0x04b60,
  71. 0x0aae4,
  72. 0x0a570,
  73. 0x05260,
  74. 0x0f263,
  75. 0x0d950,
  76. 0x05b57,
  77. 0x056a0, //1960-1969
  78. 0x096d0,
  79. 0x04dd5,
  80. 0x04ad0,
  81. 0x0a4d0,
  82. 0x0d4d4,
  83. 0x0d250,
  84. 0x0d558,
  85. 0x0b540,
  86. 0x0b6a0,
  87. 0x195a6, //1970-1979
  88. 0x095b0,
  89. 0x049b0,
  90. 0x0a974,
  91. 0x0a4b0,
  92. 0x0b27a,
  93. 0x06a50,
  94. 0x06d40,
  95. 0x0af46,
  96. 0x0ab60,
  97. 0x09570, //1980-1989
  98. 0x04af5,
  99. 0x04970,
  100. 0x064b0,
  101. 0x074a3,
  102. 0x0ea50,
  103. 0x06b58,
  104. 0x05ac0,
  105. 0x0ab60,
  106. 0x096d5,
  107. 0x092e0, //1990-1999
  108. 0x0c960,
  109. 0x0d954,
  110. 0x0d4a0,
  111. 0x0da50,
  112. 0x07552,
  113. 0x056a0,
  114. 0x0abb7,
  115. 0x025d0,
  116. 0x092d0,
  117. 0x0cab5, //2000-2009
  118. 0x0a950,
  119. 0x0b4a0,
  120. 0x0baa4,
  121. 0x0ad50,
  122. 0x055d9,
  123. 0x04ba0,
  124. 0x0a5b0,
  125. 0x15176,
  126. 0x052b0,
  127. 0x0a930, //2010-2019
  128. 0x07954,
  129. 0x06aa0,
  130. 0x0ad50,
  131. 0x05b52,
  132. 0x04b60,
  133. 0x0a6e6,
  134. 0x0a4e0,
  135. 0x0d260,
  136. 0x0ea65,
  137. 0x0d530, //2020-2029
  138. 0x05aa0,
  139. 0x076a3,
  140. 0x096d0,
  141. 0x04afb,
  142. 0x04ad0,
  143. 0x0a4d0,
  144. 0x1d0b6,
  145. 0x0d250,
  146. 0x0d520,
  147. 0x0dd45, //2030-2039
  148. 0x0b5a0,
  149. 0x056d0,
  150. 0x055b2,
  151. 0x049b0,
  152. 0x0a577,
  153. 0x0a4b0,
  154. 0x0aa50,
  155. 0x1b255,
  156. 0x06d20,
  157. 0x0ada0, //2040-2049
  158. /**Add By JJonline@JJonline.Cn**/
  159. 0x14b63,
  160. 0x09370,
  161. 0x049f8,
  162. 0x04970,
  163. 0x064b0,
  164. 0x168a6,
  165. 0x0ea50,
  166. 0x06b20,
  167. 0x1a6c4,
  168. 0x0aae0, //2050-2059
  169. 0x092e0,
  170. 0x0d2e3,
  171. 0x0c960,
  172. 0x0d557,
  173. 0x0d4a0,
  174. 0x0da50,
  175. 0x05d55,
  176. 0x056a0,
  177. 0x0a6d0,
  178. 0x055d4, //2060-2069
  179. 0x052d0,
  180. 0x0a9b8,
  181. 0x0a950,
  182. 0x0b4a0,
  183. 0x0b6a6,
  184. 0x0ad50,
  185. 0x055a0,
  186. 0x0aba4,
  187. 0x0a5b0,
  188. 0x052b0, //2070-2079
  189. 0x0b273,
  190. 0x06930,
  191. 0x07337,
  192. 0x06aa0,
  193. 0x0ad50,
  194. 0x14b55,
  195. 0x04b60,
  196. 0x0a570,
  197. 0x054e4,
  198. 0x0d160, //2080-2089
  199. 0x0e968,
  200. 0x0d520,
  201. 0x0daa0,
  202. 0x16aa6,
  203. 0x056d0,
  204. 0x04ae0,
  205. 0x0a9d4,
  206. 0x0a2d0,
  207. 0x0d150,
  208. 0x0f252, //2090-2099
  209. 0x0d520,
  210. ], //2100
  211. /**
  212. * 公历每个月份的天数普通表
  213. * @Array Of Property
  214. * @return Number
  215. */
  216. solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
  217. /**
  218. * 天干地支之天干速查表
  219. * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
  220. * @return Cn string
  221. */
  222. Gan: [
  223. '\u7532',
  224. '\u4e59',
  225. '\u4e19',
  226. '\u4e01',
  227. '\u620a',
  228. '\u5df1',
  229. '\u5e9a',
  230. '\u8f9b',
  231. '\u58ec',
  232. '\u7678',
  233. ],
  234. /**
  235. * 天干地支之地支速查表
  236. * @Array Of Property
  237. * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
  238. * @return Cn string
  239. */
  240. Zhi: [
  241. '\u5b50',
  242. '\u4e11',
  243. '\u5bc5',
  244. '\u536f',
  245. '\u8fb0',
  246. '\u5df3',
  247. '\u5348',
  248. '\u672a',
  249. '\u7533',
  250. '\u9149',
  251. '\u620c',
  252. '\u4ea5',
  253. ],
  254. /**
  255. * 天干地支之地支速查表<=>生肖
  256. * @Array Of Property
  257. * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
  258. * @return Cn string
  259. */
  260. Animals: [
  261. '\u9f20',
  262. '\u725b',
  263. '\u864e',
  264. '\u5154',
  265. '\u9f99',
  266. '\u86c7',
  267. '\u9a6c',
  268. '\u7f8a',
  269. '\u7334',
  270. '\u9e21',
  271. '\u72d7',
  272. '\u732a',
  273. ],
  274. /**
  275. * 阳历节日
  276. */
  277. festival: {
  278. '1-1': {
  279. title: '元旦节'
  280. },
  281. '2-14': {
  282. title: '情人节'
  283. },
  284. '5-1': {
  285. title: '劳动节'
  286. },
  287. '5-4': {
  288. title: '青年节'
  289. },
  290. '6-1': {
  291. title: '儿童节'
  292. },
  293. '9-10': {
  294. title: '教师节'
  295. },
  296. '10-1': {
  297. title: '国庆节'
  298. },
  299. '12-25': {
  300. title: '圣诞节'
  301. },
  302. '3-8': {
  303. title: '妇女节'
  304. },
  305. '3-12': {
  306. title: '植树节'
  307. },
  308. '4-1': {
  309. title: '愚人节'
  310. },
  311. '5-12': {
  312. title: '护士节'
  313. },
  314. '7-1': {
  315. title: '建党节'
  316. },
  317. '8-1': {
  318. title: '建军节'
  319. },
  320. '12-24': {
  321. title: '平安夜'
  322. },
  323. },
  324. /**
  325. * 农历节日
  326. */
  327. lfestival: {
  328. '1-1': {
  329. title: '春节'
  330. },
  331. '1-15': {
  332. title: '元宵节'
  333. },
  334. '5-5': {
  335. title: '端午节'
  336. },
  337. '7-7': {
  338. title: '情人节'
  339. },
  340. '7-15': {
  341. title: '中元节'
  342. },
  343. '8-15': {
  344. title: '中秋节'
  345. },
  346. '9-9': {
  347. title: '重阳节'
  348. },
  349. '12-8': {
  350. title: '腊八节'
  351. },
  352. '12-24': {
  353. title: '北小年'
  354. },
  355. '12-25': {
  356. title: '南小年'
  357. },
  358. },
  359. /**
  360. * 返回默认定义的阳历节日
  361. */
  362. getFestival() {
  363. return this.festival
  364. },
  365. /**
  366. * 返回默认定义的内容里节日
  367. */
  368. getLunarFestival() {
  369. return this.lfestival
  370. },
  371. /**
  372. *
  373. * @param {Object} 按照festival的格式输入数据,设置阳历节日
  374. */
  375. setFestival(param = {}) {
  376. this.festival = param
  377. },
  378. /**
  379. *
  380. * @param {Object} 按照lfestival的格式输入数据,设置农历节日
  381. */
  382. setLunarFestival(param = {}) {
  383. this.lfestival = param
  384. },
  385. /**
  386. * 24节气速查表
  387. * @Array Of Property
  388. * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
  389. * @return Cn string
  390. */
  391. solarTerm: [
  392. '\u5c0f\u5bd2',
  393. '\u5927\u5bd2',
  394. '\u7acb\u6625',
  395. '\u96e8\u6c34',
  396. '\u60ca\u86f0',
  397. '\u6625\u5206',
  398. '\u6e05\u660e',
  399. '\u8c37\u96e8',
  400. '\u7acb\u590f',
  401. '\u5c0f\u6ee1',
  402. '\u8292\u79cd',
  403. '\u590f\u81f3',
  404. '\u5c0f\u6691',
  405. '\u5927\u6691',
  406. '\u7acb\u79cb',
  407. '\u5904\u6691',
  408. '\u767d\u9732',
  409. '\u79cb\u5206',
  410. '\u5bd2\u9732',
  411. '\u971c\u964d',
  412. '\u7acb\u51ac',
  413. '\u5c0f\u96ea',
  414. '\u5927\u96ea',
  415. '\u51ac\u81f3',
  416. ],
  417. /**
  418. * 1900-2100各年的24节气日期速查表
  419. * @Array Of Property
  420. * @return 0x string For splice
  421. */
  422. sTermInfo: [
  423. '9778397bd097c36b0b6fc9274c91aa',
  424. '97b6b97bd19801ec9210c965cc920e',
  425. '97bcf97c3598082c95f8c965cc920f',
  426. '97bd0b06bdb0722c965ce1cfcc920f',
  427. 'b027097bd097c36b0b6fc9274c91aa',
  428. '97b6b97bd19801ec9210c965cc920e',
  429. '97bcf97c359801ec95f8c965cc920f',
  430. '97bd0b06bdb0722c965ce1cfcc920f',
  431. 'b027097bd097c36b0b6fc9274c91aa',
  432. '97b6b97bd19801ec9210c965cc920e',
  433. '97bcf97c359801ec95f8c965cc920f',
  434. '97bd0b06bdb0722c965ce1cfcc920f',
  435. 'b027097bd097c36b0b6fc9274c91aa',
  436. '9778397bd19801ec9210c965cc920e',
  437. '97b6b97bd19801ec95f8c965cc920f',
  438. '97bd09801d98082c95f8e1cfcc920f',
  439. '97bd097bd097c36b0b6fc9210c8dc2',
  440. '9778397bd197c36c9210c9274c91aa',
  441. '97b6b97bd19801ec95f8c965cc920e',
  442. '97bd09801d98082c95f8e1cfcc920f',
  443. '97bd097bd097c36b0b6fc9210c8dc2',
  444. '9778397bd097c36c9210c9274c91aa',
  445. '97b6b97bd19801ec95f8c965cc920e',
  446. '97bcf97c3598082c95f8e1cfcc920f',
  447. '97bd097bd097c36b0b6fc9210c8dc2',
  448. '9778397bd097c36c9210c9274c91aa',
  449. '97b6b97bd19801ec9210c965cc920e',
  450. '97bcf97c3598082c95f8c965cc920f',
  451. '97bd097bd097c35b0b6fc920fb0722',
  452. '9778397bd097c36b0b6fc9274c91aa',
  453. '97b6b97bd19801ec9210c965cc920e',
  454. '97bcf97c3598082c95f8c965cc920f',
  455. '97bd097bd097c35b0b6fc920fb0722',
  456. '9778397bd097c36b0b6fc9274c91aa',
  457. '97b6b97bd19801ec9210c965cc920e',
  458. '97bcf97c359801ec95f8c965cc920f',
  459. '97bd097bd097c35b0b6fc920fb0722',
  460. '9778397bd097c36b0b6fc9274c91aa',
  461. '97b6b97bd19801ec9210c965cc920e',
  462. '97bcf97c359801ec95f8c965cc920f',
  463. '97bd097bd097c35b0b6fc920fb0722',
  464. '9778397bd097c36b0b6fc9274c91aa',
  465. '97b6b97bd19801ec9210c965cc920e',
  466. '97bcf97c359801ec95f8c965cc920f',
  467. '97bd097bd07f595b0b6fc920fb0722',
  468. '9778397bd097c36b0b6fc9210c8dc2',
  469. '9778397bd19801ec9210c9274c920e',
  470. '97b6b97bd19801ec95f8c965cc920f',
  471. '97bd07f5307f595b0b0bc920fb0722',
  472. '7f0e397bd097c36b0b6fc9210c8dc2',
  473. '9778397bd097c36c9210c9274c920e',
  474. '97b6b97bd19801ec95f8c965cc920f',
  475. '97bd07f5307f595b0b0bc920fb0722',
  476. '7f0e397bd097c36b0b6fc9210c8dc2',
  477. '9778397bd097c36c9210c9274c91aa',
  478. '97b6b97bd19801ec9210c965cc920e',
  479. '97bd07f1487f595b0b0bc920fb0722',
  480. '7f0e397bd097c36b0b6fc9210c8dc2',
  481. '9778397bd097c36b0b6fc9274c91aa',
  482. '97b6b97bd19801ec9210c965cc920e',
  483. '97bcf7f1487f595b0b0bb0b6fb0722',
  484. '7f0e397bd097c35b0b6fc920fb0722',
  485. '9778397bd097c36b0b6fc9274c91aa',
  486. '97b6b97bd19801ec9210c965cc920e',
  487. '97bcf7f1487f595b0b0bb0b6fb0722',
  488. '7f0e397bd097c35b0b6fc920fb0722',
  489. '9778397bd097c36b0b6fc9274c91aa',
  490. '97b6b97bd19801ec9210c965cc920e',
  491. '97bcf7f1487f531b0b0bb0b6fb0722',
  492. '7f0e397bd097c35b0b6fc920fb0722',
  493. '9778397bd097c36b0b6fc9274c91aa',
  494. '97b6b97bd19801ec9210c965cc920e',
  495. '97bcf7f1487f531b0b0bb0b6fb0722',
  496. '7f0e397bd07f595b0b6fc920fb0722',
  497. '9778397bd097c36b0b6fc9274c91aa',
  498. '97b6b97bd19801ec9210c9274c920e',
  499. '97bcf7f0e47f531b0b0bb0b6fb0722',
  500. '7f0e397bd07f595b0b0bc920fb0722',
  501. '9778397bd097c36b0b6fc9210c91aa',
  502. '97b6b97bd197c36c9210c9274c920e',
  503. '97bcf7f0e47f531b0b0bb0b6fb0722',
  504. '7f0e397bd07f595b0b0bc920fb0722',
  505. '9778397bd097c36b0b6fc9210c8dc2',
  506. '9778397bd097c36c9210c9274c920e',
  507. '97b6b7f0e47f531b0723b0b6fb0722',
  508. '7f0e37f5307f595b0b0bc920fb0722',
  509. '7f0e397bd097c36b0b6fc9210c8dc2',
  510. '9778397bd097c36b0b70c9274c91aa',
  511. '97b6b7f0e47f531b0723b0b6fb0721',
  512. '7f0e37f1487f595b0b0bb0b6fb0722',
  513. '7f0e397bd097c35b0b6fc9210c8dc2',
  514. '9778397bd097c36b0b6fc9274c91aa',
  515. '97b6b7f0e47f531b0723b0b6fb0721',
  516. '7f0e27f1487f595b0b0bb0b6fb0722',
  517. '7f0e397bd097c35b0b6fc920fb0722',
  518. '9778397bd097c36b0b6fc9274c91aa',
  519. '97b6b7f0e47f531b0723b0b6fb0721',
  520. '7f0e27f1487f531b0b0bb0b6fb0722',
  521. '7f0e397bd097c35b0b6fc920fb0722',
  522. '9778397bd097c36b0b6fc9274c91aa',
  523. '97b6b7f0e47f531b0723b0b6fb0721',
  524. '7f0e27f1487f531b0b0bb0b6fb0722',
  525. '7f0e397bd097c35b0b6fc920fb0722',
  526. '9778397bd097c36b0b6fc9274c91aa',
  527. '97b6b7f0e47f531b0723b0b6fb0721',
  528. '7f0e27f1487f531b0b0bb0b6fb0722',
  529. '7f0e397bd07f595b0b0bc920fb0722',
  530. '9778397bd097c36b0b6fc9274c91aa',
  531. '97b6b7f0e47f531b0723b0787b0721',
  532. '7f0e27f0e47f531b0b0bb0b6fb0722',
  533. '7f0e397bd07f595b0b0bc920fb0722',
  534. '9778397bd097c36b0b6fc9210c91aa',
  535. '97b6b7f0e47f149b0723b0787b0721',
  536. '7f0e27f0e47f531b0723b0b6fb0722',
  537. '7f0e397bd07f595b0b0bc920fb0722',
  538. '9778397bd097c36b0b6fc9210c8dc2',
  539. '977837f0e37f149b0723b0787b0721',
  540. '7f07e7f0e47f531b0723b0b6fb0722',
  541. '7f0e37f5307f595b0b0bc920fb0722',
  542. '7f0e397bd097c35b0b6fc9210c8dc2',
  543. '977837f0e37f14998082b0787b0721',
  544. '7f07e7f0e47f531b0723b0b6fb0721',
  545. '7f0e37f1487f595b0b0bb0b6fb0722',
  546. '7f0e397bd097c35b0b6fc9210c8dc2',
  547. '977837f0e37f14998082b0787b06bd',
  548. '7f07e7f0e47f531b0723b0b6fb0721',
  549. '7f0e27f1487f531b0b0bb0b6fb0722',
  550. '7f0e397bd097c35b0b6fc920fb0722',
  551. '977837f0e37f14998082b0787b06bd',
  552. '7f07e7f0e47f531b0723b0b6fb0721',
  553. '7f0e27f1487f531b0b0bb0b6fb0722',
  554. '7f0e397bd097c35b0b6fc920fb0722',
  555. '977837f0e37f14998082b0787b06bd',
  556. '7f07e7f0e47f531b0723b0b6fb0721',
  557. '7f0e27f1487f531b0b0bb0b6fb0722',
  558. '7f0e397bd07f595b0b0bc920fb0722',
  559. '977837f0e37f14998082b0787b06bd',
  560. '7f07e7f0e47f531b0723b0b6fb0721',
  561. '7f0e27f1487f531b0b0bb0b6fb0722',
  562. '7f0e397bd07f595b0b0bc920fb0722',
  563. '977837f0e37f14998082b0787b06bd',
  564. '7f07e7f0e47f149b0723b0787b0721',
  565. '7f0e27f0e47f531b0b0bb0b6fb0722',
  566. '7f0e397bd07f595b0b0bc920fb0722',
  567. '977837f0e37f14998082b0723b06bd',
  568. '7f07e7f0e37f149b0723b0787b0721',
  569. '7f0e27f0e47f531b0723b0b6fb0722',
  570. '7f0e397bd07f595b0b0bc920fb0722',
  571. '977837f0e37f14898082b0723b02d5',
  572. '7ec967f0e37f14998082b0787b0721',
  573. '7f07e7f0e47f531b0723b0b6fb0722',
  574. '7f0e37f1487f595b0b0bb0b6fb0722',
  575. '7f0e37f0e37f14898082b0723b02d5',
  576. '7ec967f0e37f14998082b0787b0721',
  577. '7f07e7f0e47f531b0723b0b6fb0722',
  578. '7f0e37f1487f531b0b0bb0b6fb0722',
  579. '7f0e37f0e37f14898082b0723b02d5',
  580. '7ec967f0e37f14998082b0787b06bd',
  581. '7f07e7f0e47f531b0723b0b6fb0721',
  582. '7f0e37f1487f531b0b0bb0b6fb0722',
  583. '7f0e37f0e37f14898082b072297c35',
  584. '7ec967f0e37f14998082b0787b06bd',
  585. '7f07e7f0e47f531b0723b0b6fb0721',
  586. '7f0e27f1487f531b0b0bb0b6fb0722',
  587. '7f0e37f0e37f14898082b072297c35',
  588. '7ec967f0e37f14998082b0787b06bd',
  589. '7f07e7f0e47f531b0723b0b6fb0721',
  590. '7f0e27f1487f531b0b0bb0b6fb0722',
  591. '7f0e37f0e366aa89801eb072297c35',
  592. '7ec967f0e37f14998082b0787b06bd',
  593. '7f07e7f0e47f149b0723b0787b0721',
  594. '7f0e27f1487f531b0b0bb0b6fb0722',
  595. '7f0e37f0e366aa89801eb072297c35',
  596. '7ec967f0e37f14998082b0723b06bd',
  597. '7f07e7f0e47f149b0723b0787b0721',
  598. '7f0e27f0e47f531b0723b0b6fb0722',
  599. '7f0e37f0e366aa89801eb072297c35',
  600. '7ec967f0e37f14998082b0723b06bd',
  601. '7f07e7f0e37f14998083b0787b0721',
  602. '7f0e27f0e47f531b0723b0b6fb0722',
  603. '7f0e37f0e366aa89801eb072297c35',
  604. '7ec967f0e37f14898082b0723b02d5',
  605. '7f07e7f0e37f14998082b0787b0721',
  606. '7f07e7f0e47f531b0723b0b6fb0722',
  607. '7f0e36665b66aa89801e9808297c35',
  608. '665f67f0e37f14898082b0723b02d5',
  609. '7ec967f0e37f14998082b0787b0721',
  610. '7f07e7f0e47f531b0723b0b6fb0722',
  611. '7f0e36665b66a449801e9808297c35',
  612. '665f67f0e37f14898082b0723b02d5',
  613. '7ec967f0e37f14998082b0787b06bd',
  614. '7f07e7f0e47f531b0723b0b6fb0721',
  615. '7f0e36665b66a449801e9808297c35',
  616. '665f67f0e37f14898082b072297c35',
  617. '7ec967f0e37f14998082b0787b06bd',
  618. '7f07e7f0e47f531b0723b0b6fb0721',
  619. '7f0e26665b66a449801e9808297c35',
  620. '665f67f0e37f1489801eb072297c35',
  621. '7ec967f0e37f14998082b0787b06bd',
  622. '7f07e7f0e47f531b0723b0b6fb0721',
  623. '7f0e27f1487f531b0b0bb0b6fb0722',
  624. ],
  625. /**
  626. * 数字转中文速查表
  627. * @Array Of Property
  628. * @trans ['日','一','二','三','四','五','六','七','八','九','十']
  629. * @return Cn string
  630. */
  631. nStr1: [
  632. '\u65e5',
  633. '\u4e00',
  634. '\u4e8c',
  635. '\u4e09',
  636. '\u56db',
  637. '\u4e94',
  638. '\u516d',
  639. '\u4e03',
  640. '\u516b',
  641. '\u4e5d',
  642. '\u5341',
  643. ],
  644. /**
  645. * 日期转农历称呼速查表
  646. * @Array Of Property
  647. * @trans ['初','十','廿','卅']
  648. * @return Cn string
  649. */
  650. nStr2: ['\u521d', '\u5341', '\u5eff', '\u5345'],
  651. /**
  652. * 月份转农历称呼速查表
  653. * @Array Of Property
  654. * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
  655. * @return Cn string
  656. */
  657. nStr3: [
  658. '\u6b63',
  659. '\u4e8c',
  660. '\u4e09',
  661. '\u56db',
  662. '\u4e94',
  663. '\u516d',
  664. '\u4e03',
  665. '\u516b',
  666. '\u4e5d',
  667. '\u5341',
  668. '\u51ac',
  669. '\u814a',
  670. ],
  671. /**
  672. * 返回农历y年一整年的总天数
  673. * @param lunar Year
  674. * @return Number
  675. * @eg:var count = calendar.lYearDays(1987) ;//count=387
  676. */
  677. lYearDays: function(y) {
  678. var i,
  679. sum = 348
  680. for (i = 0x8000; i > 0x8; i >>= 1) {
  681. sum += this.lunarInfo[y - 1900] & i ? 1 : 0
  682. }
  683. return sum + this.leapDays(y)
  684. },
  685. /**
  686. * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
  687. * @param lunar Year
  688. * @return Number (0-12)
  689. * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
  690. */
  691. leapMonth: function(y) {
  692. //闰字编码 \u95f0
  693. return this.lunarInfo[y - 1900] & 0xf
  694. },
  695. /**
  696. * 返回农历y年闰月的天数 若该年没有闰月则返回0
  697. * @param lunar Year
  698. * @return Number (0、29、30)
  699. * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
  700. */
  701. leapDays: function(y) {
  702. if (this.leapMonth(y)) {
  703. return this.lunarInfo[y - 1900] & 0x10000 ? 30 : 29
  704. }
  705. return 0
  706. },
  707. /**
  708. * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
  709. * @param lunar Year
  710. * @return Number (-1、29、30)
  711. * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
  712. */
  713. monthDays: function(y, m) {
  714. if (m > 12 || m < 1) {
  715. return -1
  716. } //月份参数从1至12,参数错误返回-1
  717. return this.lunarInfo[y - 1900] & (0x10000 >> m) ? 30 : 29
  718. },
  719. /**
  720. * 返回公历(!)y年m月的天数
  721. * @param solar Year
  722. * @return Number (-1、28、29、30、31)
  723. * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
  724. */
  725. solarDays: function(y, m) {
  726. if (m > 12 || m < 1) {
  727. return -1
  728. } //若参数错误 返回-1
  729. var ms = m - 1
  730. if (ms == 1) {
  731. //2月份的闰平规律测算后确认返回28或29
  732. return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0 ? 29 : 28
  733. } else {
  734. return this.solarMonth[ms]
  735. }
  736. },
  737. /**
  738. * 农历年份转换为干支纪年
  739. * @param lYear 农历年的年份数
  740. * @return Cn string
  741. */
  742. toGanZhiYear: function(lYear) {
  743. var ganKey = (lYear - 3) % 10
  744. var zhiKey = (lYear - 3) % 12
  745. if (ganKey == 0) ganKey = 10 //如果余数为0则为最后一个天干
  746. if (zhiKey == 0) zhiKey = 12 //如果余数为0则为最后一个地支
  747. return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1]
  748. },
  749. /**
  750. * 公历月、日判断所属星座
  751. * @param cMonth [description]
  752. * @param cDay [description]
  753. * @return Cn string
  754. */
  755. toAstro: function(cMonth, cDay) {
  756. var s =
  757. '\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'
  758. var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22]
  759. return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + '\u5ea7' //座
  760. },
  761. /**
  762. * 传入offset偏移量返回干支
  763. * @param offset 相对甲子的偏移量
  764. * @return Cn string
  765. */
  766. toGanZhi: function(offset) {
  767. return this.Gan[offset % 10] + this.Zhi[offset % 12]
  768. },
  769. /**
  770. * 传入公历(!)y年获得该年第n个节气的公历日期
  771. * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
  772. * @return day Number
  773. * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
  774. */
  775. getTerm: function(y, n) {
  776. if (y < 1900 || y > 2100) {
  777. return -1
  778. }
  779. if (n < 1 || n > 24) {
  780. return -1
  781. }
  782. var _table = this.sTermInfo[y - 1900]
  783. var _info = [
  784. parseInt('0x' + _table.substr(0, 5)).toString(),
  785. parseInt('0x' + _table.substr(5, 5)).toString(),
  786. parseInt('0x' + _table.substr(10, 5)).toString(),
  787. parseInt('0x' + _table.substr(15, 5)).toString(),
  788. parseInt('0x' + _table.substr(20, 5)).toString(),
  789. parseInt('0x' + _table.substr(25, 5)).toString(),
  790. ]
  791. var _calday = [
  792. _info[0].substr(0, 1),
  793. _info[0].substr(1, 2),
  794. _info[0].substr(3, 1),
  795. _info[0].substr(4, 2),
  796. _info[1].substr(0, 1),
  797. _info[1].substr(1, 2),
  798. _info[1].substr(3, 1),
  799. _info[1].substr(4, 2),
  800. _info[2].substr(0, 1),
  801. _info[2].substr(1, 2),
  802. _info[2].substr(3, 1),
  803. _info[2].substr(4, 2),
  804. _info[3].substr(0, 1),
  805. _info[3].substr(1, 2),
  806. _info[3].substr(3, 1),
  807. _info[3].substr(4, 2),
  808. _info[4].substr(0, 1),
  809. _info[4].substr(1, 2),
  810. _info[4].substr(3, 1),
  811. _info[4].substr(4, 2),
  812. _info[5].substr(0, 1),
  813. _info[5].substr(1, 2),
  814. _info[5].substr(3, 1),
  815. _info[5].substr(4, 2),
  816. ]
  817. return parseInt(_calday[n - 1])
  818. },
  819. /**
  820. * 传入农历数字月份返回汉语通俗表示法
  821. * @param lunar month
  822. * @return Cn string
  823. * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
  824. */
  825. toChinaMonth: function(m) {
  826. // 月 => \u6708
  827. if (m > 12 || m < 1) {
  828. return -1
  829. } //若参数错误 返回-1
  830. var s = this.nStr3[m - 1]
  831. s += '\u6708' //加上月字
  832. return s
  833. },
  834. /**
  835. * 传入农历日期数字返回汉字表示法
  836. * @param lunar day
  837. * @return Cn string
  838. * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
  839. */
  840. toChinaDay: function(d) {
  841. //日 => \u65e5
  842. var s
  843. switch (d) {
  844. case 10:
  845. s = '\u521d\u5341'
  846. break
  847. case 20:
  848. s = '\u4e8c\u5341'
  849. break
  850. break
  851. case 30:
  852. s = '\u4e09\u5341'
  853. break
  854. break
  855. default:
  856. s = this.nStr2[Math.floor(d / 10)]
  857. s += this.nStr1[d % 10]
  858. }
  859. return s
  860. },
  861. /**
  862. * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
  863. * @param y year
  864. * @return Cn string
  865. * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
  866. */
  867. getAnimal: function(y) {
  868. return this.Animals[(y - 4) % 12]
  869. },
  870. /**
  871. * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
  872. * @param y solar year
  873. * @param m solar month
  874. * @param d solar day
  875. * @return JSON object
  876. * @eg:console.log(calendar.solar2lunar(1987,11,01));
  877. */
  878. solar2lunar: function(y, m, d) {
  879. //参数区间1900.1.31~2100.12.31
  880. y = parseInt(y)
  881. m = parseInt(m)
  882. d = parseInt(d)
  883. //年份限定、上限
  884. if (y < 1900 || y > 2100) {
  885. return -1 // undefined转换为数字变为NaN
  886. }
  887. //公历传参最下限
  888. if (y == 1900 && m == 1 && d < 31) {
  889. return -1
  890. }
  891. //未传参 获得当天
  892. if (!y) {
  893. var objDate = new Date()
  894. } else {
  895. var objDate = new Date(y, parseInt(m) - 1, d)
  896. }
  897. var i,
  898. leap = 0,
  899. temp = 0
  900. //修正ymd参数
  901. var y = objDate.getFullYear(),
  902. m = objDate.getMonth() + 1,
  903. d = objDate.getDate()
  904. var offset =
  905. (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) -
  906. Date.UTC(1900, 0, 31)) /
  907. 86400000
  908. for (i = 1900; i < 2101 && offset > 0; i++) {
  909. temp = this.lYearDays(i)
  910. offset -= temp
  911. }
  912. if (offset < 0) {
  913. offset += temp
  914. i--
  915. }
  916. //是否今天
  917. var isTodayObj = new Date(),
  918. isToday = false
  919. if (
  920. isTodayObj.getFullYear() == y &&
  921. isTodayObj.getMonth() + 1 == m &&
  922. isTodayObj.getDate() == d
  923. ) {
  924. isToday = true
  925. }
  926. //星期几
  927. var nWeek = objDate.getDay(),
  928. cWeek = this.nStr1[nWeek]
  929. //数字表示周几顺应天朝周一开始的惯例
  930. if (nWeek == 0) {
  931. nWeek = 7
  932. }
  933. //农历年
  934. var year = i
  935. var leap = this.leapMonth(i) //闰哪个月
  936. var isLeap = false
  937. //效验闰月
  938. for (i = 1; i < 13 && offset > 0; i++) {
  939. //闰月
  940. if (leap > 0 && i == leap + 1 && isLeap == false) {
  941. --i
  942. isLeap = true
  943. temp = this.leapDays(year) //计算农历闰月天数
  944. } else {
  945. temp = this.monthDays(year, i) //计算农历普通月天数
  946. }
  947. //解除闰月
  948. if (isLeap == true && i == leap + 1) {
  949. isLeap = false
  950. }
  951. offset -= temp
  952. }
  953. // 闰月导致数组下标重叠取反
  954. if (offset == 0 && leap > 0 && i == leap + 1) {
  955. if (isLeap) {
  956. isLeap = false
  957. } else {
  958. isLeap = true
  959. --i
  960. }
  961. }
  962. if (offset < 0) {
  963. offset += temp
  964. --i
  965. }
  966. //农历月
  967. var month = i
  968. //农历日
  969. var day = offset + 1
  970. //天干地支处理
  971. var sm = m - 1
  972. var gzY = this.toGanZhiYear(year)
  973. // 当月的两个节气
  974. // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
  975. var firstNode = this.getTerm(y, m * 2 - 1) //返回当月「节」为几日开始
  976. var secondNode = this.getTerm(y, m * 2) //返回当月「节」为几日开始
  977. // 依据12节气修正干支月
  978. var gzM = this.toGanZhi((y - 1900) * 12 + m + 11)
  979. if (d >= firstNode) {
  980. gzM = this.toGanZhi((y - 1900) * 12 + m + 12)
  981. }
  982. //传入的日期的节气与否
  983. var isTerm = false
  984. var Term = null
  985. if (firstNode == d) {
  986. isTerm = true
  987. Term = this.solarTerm[m * 2 - 2]
  988. }
  989. if (secondNode == d) {
  990. isTerm = true
  991. Term = this.solarTerm[m * 2 - 1]
  992. }
  993. //日柱 当月一日与 1900/1/1 相差天数
  994. var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10
  995. var gzD = this.toGanZhi(dayCyclical + d - 1)
  996. //该日期所属的星座
  997. var astro = this.toAstro(m, d)
  998. var solarDate = y + '-' + m + '-' + d
  999. var lunarDate = year + '-' + month + '-' + day
  1000. var festival = this.festival
  1001. var lfestival = this.lfestival
  1002. var festivalDate = m + '-' + d
  1003. var lunarFestivalDate = month + '-' + day
  1004. let obj = {
  1005. date: solarDate,
  1006. lunarDate: lunarDate,
  1007. festival: festival[festivalDate] ? festival[festivalDate].title : null,
  1008. lunarFestival: lfestival[lunarFestivalDate] ?
  1009. lfestival[lunarFestivalDate].title : null,
  1010. lYear: year,
  1011. lMonth: month,
  1012. lDay: day,
  1013. Animal: this.getAnimal(year),
  1014. IMonthCn: (isLeap ? '\u95f0' : '') + this.toChinaMonth(month),
  1015. IDayCn: this.toChinaDay(day),
  1016. cYear: y,
  1017. cMonth: m,
  1018. cDay: d,
  1019. gzYear: gzY,
  1020. gzMonth: gzM,
  1021. gzDay: gzD,
  1022. isToday: isToday,
  1023. isLeap: isLeap,
  1024. nWeek: nWeek,
  1025. ncWeek: '\u661f\u671f' + cWeek,
  1026. isTerm: isTerm,
  1027. Term: Term,
  1028. astro: astro,
  1029. }
  1030. // console.log(obj.lYear, "obj")
  1031. return obj
  1032. },
  1033. /**
  1034. * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
  1035. * @param y lunar year
  1036. * @param m lunar month
  1037. * @param d lunar day
  1038. * @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
  1039. * @return JSON object
  1040. * @eg:console.log(calendar.lunar2solar(1987,9,10));
  1041. */
  1042. lunar2solar: function(y, m, d, isLeapMonth) {
  1043. //参数区间1900.1.31~2100.12.1
  1044. y = parseInt(y)
  1045. m = parseInt(m)
  1046. d = parseInt(d)
  1047. var isLeapMonth = !!isLeapMonth
  1048. var leapOffset = 0
  1049. var leapMonth = this.leapMonth(y)
  1050. var leapDay = this.leapDays(y)
  1051. if (isLeapMonth && leapMonth != m) {
  1052. return -1
  1053. } //传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
  1054. if ((y == 2100 && m == 12 && d > 1) || (y == 1900 && m == 1 && d < 31)) {
  1055. return -1
  1056. } //超出了最大极限值
  1057. var day = this.monthDays(y, m)
  1058. var _day = day
  1059. //bugFix 2016-9-25
  1060. //if month is leap, _day use leapDays method
  1061. if (isLeapMonth) {
  1062. _day = this.leapDays(y, m)
  1063. }
  1064. if (y < 1900 || y > 2100 || d > _day) {
  1065. return -1
  1066. } //参数合法性效验
  1067. //计算农历的时间差
  1068. var offset = 0
  1069. for (var i = 1900; i < y; i++) {
  1070. offset += this.lYearDays(i)
  1071. }
  1072. var leap = 0,
  1073. isAdd = false
  1074. for (var i = 1; i < m; i++) {
  1075. leap = this.leapMonth(y)
  1076. if (!isAdd) {
  1077. //处理闰月
  1078. if (leap <= i && leap > 0) {
  1079. offset += this.leapDays(y)
  1080. isAdd = true
  1081. }
  1082. }
  1083. offset += this.monthDays(y, i)
  1084. }
  1085. //转换闰月农历 需补充该年闰月的前一个月的时差
  1086. if (isLeapMonth) {
  1087. offset += day
  1088. }
  1089. //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
  1090. var stmap = Date.UTC(1900, 1, 30, 0, 0, 0)
  1091. var calObj = new Date((offset + d - 31) * 86400000 + stmap)
  1092. var cY = calObj.getUTCFullYear()
  1093. var cM = calObj.getUTCMonth() + 1
  1094. var cD = calObj.getUTCDate()
  1095. return this.solar2lunar(cY, cM, cD)
  1096. },
  1097. }