index.test.ts 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. import {
  2. getLunarDate,
  3. getLunarDatesInRange,
  4. getSolarDateFromLunar,
  5. } from "../../src";
  6. describe("solar_lunar", () => {
  7. test("getLunarDate should return correct lunar date for a given solar date", () => {
  8. // 闰月第一天
  9. let result = getLunarDate("2014-10-24");
  10. expect(result).toEqual({
  11. date: '2014-10-24',
  12. lunarYear: 2014,
  13. lunarMon: 9,
  14. lunarDay: 1,
  15. isLeap: true,
  16. zodiac: '马',
  17. yearCyl: '甲午',
  18. monCyl: '甲戌',
  19. dayCyl: '戊辰',
  20. lunarYearCN: '二零一四',
  21. lunarMonCN: '九月',
  22. lunarDayCN: '初一'
  23. })
  24. result = getLunarDate("2057-09-28");
  25. expect(result).toEqual({
  26. date: "2057-09-28",
  27. lunarYear: 2057,
  28. lunarMon: 8,
  29. lunarDay: 30,
  30. isLeap: false,
  31. lunarDayCN: "三十",
  32. lunarMonCN: "八月",
  33. lunarYearCN: "二零五七",
  34. yearCyl: "丁丑",
  35. monCyl: "己酉",
  36. dayCyl: "戊子",
  37. zodiac: "牛",
  38. });
  39. result = getLunarDate("2097-08-07");
  40. expect(result).toEqual({
  41. date: "2097-08-07",
  42. dayCyl: "丙寅",
  43. isLeap: false,
  44. lunarDay: 1,
  45. lunarDayCN: "初一",
  46. lunarMon: 7,
  47. lunarMonCN: "七月",
  48. lunarYear: 2097,
  49. lunarYearCN: "二零九七",
  50. monCyl: "戊申",
  51. yearCyl: "丁巳",
  52. zodiac: "蛇",
  53. });
  54. result = getLunarDate("2001-04-27");
  55. expect(result.isLeap).toBe(false);
  56. result = getLunarDate("2001-05-27");
  57. expect(result.isLeap).toBe(true);
  58. });
  59. test("getSolarDateFromLunar should return correct solar date for a given lunar date", () => {
  60. let result = getSolarDateFromLunar("2001-03-05");
  61. expect(result).toEqual({ date: "2001-03-29", leapMonthDate: undefined });
  62. result = getSolarDateFromLunar("2001-04-05");
  63. expect(result).toEqual({ date: "2001-04-27", leapMonthDate: "2001-05-27" });
  64. });
  65. test("getLunarDatesInRange should return correct lunar dates for a given solar date range", () => {
  66. let result = getLunarDatesInRange("2001-05-21", "2001-05-26");
  67. expect(result).toEqual([
  68. {
  69. date: "2001-05-21",
  70. lunarYear: 2001,
  71. lunarMon: 4,
  72. lunarDay: 29,
  73. isLeap: false,
  74. zodiac: "蛇",
  75. yearCyl: "辛巳",
  76. monCyl: "癸巳",
  77. dayCyl: "甲申",
  78. lunarYearCN: "二零零一",
  79. lunarMonCN: "四月",
  80. lunarDayCN: "廿九",
  81. },
  82. {
  83. date: "2001-05-22",
  84. lunarYear: 2001,
  85. lunarMon: 4,
  86. lunarDay: 30,
  87. isLeap: false,
  88. zodiac: "蛇",
  89. yearCyl: "辛巳",
  90. monCyl: "癸巳",
  91. dayCyl: "乙酉",
  92. lunarYearCN: "二零零一",
  93. lunarMonCN: "四月",
  94. lunarDayCN: "三十",
  95. },
  96. {
  97. date: "2001-05-23",
  98. lunarYear: 2001,
  99. lunarMon: 4,
  100. lunarDay: 1,
  101. isLeap: true,
  102. zodiac: "蛇",
  103. yearCyl: "辛巳",
  104. monCyl: "癸巳",
  105. dayCyl: "丙戌",
  106. lunarYearCN: "二零零一",
  107. lunarMonCN: "四月",
  108. lunarDayCN: "初一",
  109. },
  110. {
  111. date: "2001-05-24",
  112. lunarYear: 2001,
  113. lunarMon: 4,
  114. lunarDay: 2,
  115. isLeap: true,
  116. zodiac: "蛇",
  117. yearCyl: "辛巳",
  118. monCyl: "癸巳",
  119. dayCyl: "丁亥",
  120. lunarYearCN: "二零零一",
  121. lunarMonCN: "四月",
  122. lunarDayCN: "初二",
  123. },
  124. {
  125. date: "2001-05-25",
  126. lunarYear: 2001,
  127. lunarMon: 4,
  128. lunarDay: 3,
  129. isLeap: true,
  130. zodiac: "蛇",
  131. yearCyl: "辛巳",
  132. monCyl: "癸巳",
  133. dayCyl: "戊子",
  134. lunarYearCN: "二零零一",
  135. lunarMonCN: "四月",
  136. lunarDayCN: "初三",
  137. },
  138. {
  139. date: "2001-05-26",
  140. lunarYear: 2001,
  141. lunarMon: 4,
  142. lunarDay: 4,
  143. isLeap: true,
  144. zodiac: "蛇",
  145. yearCyl: "辛巳",
  146. monCyl: "癸巳",
  147. dayCyl: "己丑",
  148. lunarYearCN: "二零零一",
  149. lunarMonCN: "四月",
  150. lunarDayCN: "初四",
  151. },
  152. ]);
  153. });
  154. });