cantian-bazi 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/README.md +1390 -0
  2. package/dist/Bazi.d.ts +22 -0
  3. package/dist/Bazi.js +67 -0
  4. package/dist/Bazi.js.map +1 -0
  5. package/dist/Datetime.d.ts +30 -0
  6. package/dist/Datetime.js +51 -0
  7. package/dist/Datetime.js.map +1 -0
  8. package/dist/EarthBranch.d.ts +23 -0
  9. package/dist/EarthBranch.js +73 -0
  10. package/dist/EarthBranch.js.map +1 -0
  11. package/dist/HeavenStem.d.ts +22 -0
  12. package/dist/HeavenStem.js +64 -0
  13. package/dist/HeavenStem.js.map +1 -0
  14. package/dist/SOLAR_TERM_TIMESTAMPS.d.ts +1 -0
  15. package/dist/SOLAR_TERM_TIMESTAMPS.js +17661 -0
  16. package/dist/SOLAR_TERM_TIMESTAMPS.js.map +1 -0
  17. package/dist/SixtyCycle.d.ts +18 -0
  18. package/dist/SixtyCycle.js +83 -0
  19. package/dist/SixtyCycle.js.map +1 -0
  20. package/dist/SixtyCycleTime.d.ts +58 -0
  21. package/dist/SixtyCycleTime.js +438 -0
  22. package/dist/SixtyCycleTime.js.map +1 -0
  23. package/dist/SolarTerm.d.ts +26 -0
  24. package/dist/SolarTerm.js +86 -0
  25. package/dist/SolarTerm.js.map +1 -0
  26. package/dist/Wuxing.d.ts +18 -0
  27. package/dist/Wuxing.js +41 -0
  28. package/dist/Wuxing.js.map +1 -0
  29. package/dist/basic.d.ts +5 -0
  30. package/dist/basic.js +3 -0
  31. package/dist/basic.js.map +1 -0
  32. package/dist/gods/index.d.ts +988 -0
  33. package/dist/gods/index.js +143 -0
  34. package/dist/gods/index.js.map +1 -0
  35. package/dist/gods/shared.d.ts +19 -0
  36. package/dist/gods/shared.js +162 -0
  37. package/dist/gods/shared.js.map +1 -0
  38. package/dist/gods//344/270/211/345/245/207/350/264/265/344/272/272.d.ts +9 -0
  39. package/dist/gods//344/270/211/345/245/207/350/264/265/344/272/272.js +11 -0
  40. package/dist/gods//344/270/211/345/245/207/350/264/265/344/272/272.js.map +1 -0
  41. package/dist/gods//344/270/247/351/227/250.d.ts +9 -0
  42. package/dist/gods//344/270/247/351/227/250.js +7 -0
  43. package/dist/gods//344/270/247/351/227/250.js.map +1 -0
  44. package/dist/gods//344/271/235/344/270/221.d.ts +9 -0
  45. package/dist/gods//344/271/235/344/270/221.js +7 -0
  46. package/dist/gods//344/271/235/344/270/221.js.map +1 -0
  47. package/dist/gods//344/272/241/347/245/236.d.ts +9 -0
  48. package/dist/gods//344/272/241/347/245/236.js +14 -0
  49. package/dist/gods//344/272/241/347/245/236.js.map +1 -0
  50. package/dist/gods//345/205/203/350/276/260.d.ts +9 -0
  51. package/dist/gods//345/205/203/350/276/260.js +15 -0
  52. package/dist/gods//345/205/203/350/276/260.js.map +1 -0
  53. package/dist/gods//345/205/253/344/270/223.d.ts +9 -0
  54. package/dist/gods//345/205/253/344/270/223.js +7 -0
  55. package/dist/gods//345/205/253/344/270/223.js.map +1 -0
  56. package/dist/gods//345/205/255/345/216/204.d.ts +9 -0
  57. package/dist/gods//345/205/255/345/216/204.js +7 -0
  58. package/dist/gods//345/205/255/345/216/204.js.map +1 -0
  59. package/dist/gods//345/205/255/347/247/200.d.ts +9 -0
  60. package/dist/gods//345/205/255/347/247/200.js +7 -0
  61. package/dist/gods//345/205/255/347/247/200.js.map +1 -0
  62. package/dist/gods//345/212/253/347/205/236.d.ts +9 -0
  63. package/dist/gods//345/212/253/347/205/236.js +14 -0
  64. package/dist/gods//345/212/253/347/205/236.js.map +1 -0
  65. package/dist/gods//345/213/276/347/273/236/347/205/236.d.ts +9 -0
  66. package/dist/gods//345/213/276/347/273/236/347/205/236.js +7 -0
  67. package/dist/gods//345/213/276/347/273/236/347/205/236.js.map +1 -0
  68. package/dist/gods//345/215/201/346/201/266/345/244/247/350/264/245.d.ts +9 -0
  69. package/dist/gods//345/215/201/346/201/266/345/244/247/350/264/245.js +7 -0
  70. package/dist/gods//345/215/201/346/201/266/345/244/247/350/264/245.js.map +1 -0
  71. package/dist/gods//345/215/201/347/201/265.d.ts +9 -0
  72. package/dist/gods//345/215/201/347/201/265.js +7 -0
  73. package/dist/gods//345/215/201/347/201/265.js.map +1 -0
  74. package/dist/gods//345/215/216/347/233/226.d.ts +9 -0
  75. package/dist/gods//345/215/216/347/233/226.js +14 -0
  76. package/dist/gods//345/215/216/347/233/226.js.map +1 -0
  77. package/dist/gods//345/220/212/345/256/242.d.ts +9 -0
  78. package/dist/gods//345/220/212/345/256/242.js +7 -0
  79. package/dist/gods//345/220/212/345/256/242.js.map +1 -0
  80. package/dist/gods//345/233/233/345/272/237.d.ts +9 -0
  81. package/dist/gods//345/233/233/345/272/237.js +12 -0
  82. package/dist/gods//345/233/233/345/272/237.js.map +1 -0
  83. package/dist/gods//345/233/275/345/215/260.d.ts +9 -0
  84. package/dist/gods//345/233/275/345/215/260.js +8 -0
  85. package/dist/gods//345/233/275/345/215/260.js.map +1 -0
  86. package/dist/gods//345/234/260/350/275/254.d.ts +9 -0
  87. package/dist/gods//345/234/260/350/275/254.js +7 -0
  88. package/dist/gods//345/234/260/350/275/254.js.map +1 -0
  89. package/dist/gods//345/244/251/344/271/231/350/264/265/344/272/272.d.ts +9 -0
  90. package/dist/gods//345/244/251/344/271/231/350/264/265/344/272/272.js +8 -0
  91. package/dist/gods//345/244/251/344/271/231/350/264/265/344/272/272.js.map +1 -0
  92. package/dist/gods//345/244/251/345/214/273/346/230/237.d.ts +9 -0
  93. package/dist/gods//345/244/251/345/214/273/346/230/237.js +7 -0
  94. package/dist/gods//345/244/251/345/214/273/346/230/237.js.map +1 -0
  95. package/dist/gods//345/244/251/345/216/250/350/264/265/344/272/272.d.ts +9 -0
  96. package/dist/gods//345/244/251/345/216/250/350/264/265/344/272/272.js +8 -0
  97. package/dist/gods//345/244/251/345/216/250/350/264/265/344/272/272.js.map +1 -0
  98. package/dist/gods//345/244/251/345/226/234.d.ts +9 -0
  99. package/dist/gods//345/244/251/345/226/234.js +7 -0
  100. package/dist/gods//345/244/251/345/226/234.js.map +1 -0
  101. package/dist/gods//345/244/251/345/256/230/350/264/265/344/272/272.d.ts +9 -0
  102. package/dist/gods//345/244/251/345/256/230/350/264/265/344/272/272.js +8 -0
  103. package/dist/gods//345/244/251/345/256/230/350/264/265/344/272/272.js.map +1 -0
  104. package/dist/gods//345/244/251/345/276/267/345/220/210.d.ts +9 -0
  105. package/dist/gods//345/244/251/345/276/267/345/220/210.js +7 -0
  106. package/dist/gods//345/244/251/345/276/267/345/220/210.js.map +1 -0
  107. package/dist/gods//345/244/251/345/276/267/350/264/265/344/272/272.d.ts +9 -0
  108. package/dist/gods//345/244/251/345/276/267/350/264/265/344/272/272.js +7 -0
  109. package/dist/gods//345/244/251/345/276/267/350/264/265/344/272/272.js.map +1 -0
  110. package/dist/gods//345/244/251/347/275/227/345/234/260/347/275/2211.d.ts +9 -0
  111. package/dist/gods//345/244/251/347/275/227/345/234/260/347/275/2211.js +14 -0
  112. package/dist/gods//345/244/251/347/275/227/345/234/260/347/275/2211.js.map +1 -0
  113. package/dist/gods//345/244/251/347/275/227/345/234/260/347/275/2212.d.ts +9 -0
  114. package/dist/gods//345/244/251/347/275/227/345/234/260/347/275/2212.js +16 -0
  115. package/dist/gods//345/244/251/347/275/227/345/234/260/347/275/2212.js.map +1 -0
  116. package/dist/gods//345/244/251/350/265/246/346/230/237.d.ts +9 -0
  117. package/dist/gods//345/244/251/350/265/246/346/230/237.js +7 -0
  118. package/dist/gods//345/244/251/350/265/246/346/230/237.js.map +1 -0
  119. package/dist/gods//345/244/251/350/275/254.d.ts +9 -0
  120. package/dist/gods//345/244/251/350/275/254.js +7 -0
  121. package/dist/gods//345/244/251/350/275/254.js.map +1 -0
  122. package/dist/gods//345/244/252/346/236/201/350/264/265/344/272/272.d.ts +9 -0
  123. package/dist/gods//345/244/252/346/236/201/350/264/265/344/272/272.js +8 -0
  124. package/dist/gods//345/244/252/346/236/201/350/264/265/344/272/272.js.map +1 -0
  125. package/dist/gods//345/255/244/350/276/260.d.ts +9 -0
  126. package/dist/gods//345/255/244/350/276/260.js +10 -0
  127. package/dist/gods//345/255/244/350/276/260.js.map +1 -0
  128. package/dist/gods//345/255/244/351/270/276.d.ts +9 -0
  129. package/dist/gods//345/255/244/351/270/276.js +7 -0
  130. package/dist/gods//345/255/244/351/270/276.js.map +1 -0
  131. package/dist/gods//345/255/246/345/240/202.d.ts +9 -0
  132. package/dist/gods//345/255/246/345/240/202.js +14 -0
  133. package/dist/gods//345/255/246/345/240/202.js.map +1 -0
  134. package/dist/gods//345/257/241/345/256/277.d.ts +9 -0
  135. package/dist/gods//345/257/241/345/256/277.js +10 -0
  136. package/dist/gods//345/257/241/345/256/277.js.map +1 -0
  137. package/dist/gods//345/260/206/346/230/237.d.ts +9 -0
  138. package/dist/gods//345/260/206/346/230/237.js +14 -0
  139. package/dist/gods//345/260/206/346/230/237.js.map +1 -0
  140. package/dist/gods//345/276/267/347/247/200/350/264/265/344/272/272.d.ts +9 -0
  141. package/dist/gods//345/276/267/347/247/200/350/264/265/344/272/272.js +18 -0
  142. package/dist/gods//345/276/267/347/247/200/350/264/265/344/272/272.js.map +1 -0
  143. package/dist/gods//346/212/253/345/244/264.d.ts +9 -0
  144. package/dist/gods//346/212/253/345/244/264.js +7 -0
  145. package/dist/gods//346/212/253/345/244/264.js.map +1 -0
  146. package/dist/gods//346/212/253/351/272/273.d.ts +9 -0
  147. package/dist/gods//346/212/253/351/272/273.js +7 -0
  148. package/dist/gods//346/212/253/351/272/273.js.map +1 -0
  149. package/dist/gods//346/213/261/347/246/204.d.ts +9 -0
  150. package/dist/gods//346/213/261/347/246/204.js +7 -0
  151. package/dist/gods//346/213/261/347/246/204.js.map +1 -0
  152. package/dist/gods//346/226/207/346/230/214/350/264/265/344/272/272.d.ts +9 -0
  153. package/dist/gods//346/226/207/346/230/214/350/264/265/344/272/272.js +8 -0
  154. package/dist/gods//346/226/207/346/230/214/350/264/265/344/272/272.js.map +1 -0
  155. package/dist/gods//346/234/210/345/276/267/345/220/210.d.ts +9 -0
  156. package/dist/gods//346/234/210/345/276/267/345/220/210.js +7 -0
  157. package/dist/gods//346/234/210/345/276/267/345/220/210.js.map +1 -0
  158. package/dist/gods//346/234/210/345/276/267/350/264/265/344/272/272.d.ts +9 -0
  159. package/dist/gods//346/234/210/345/276/267/350/264/265/344/272/272.js +7 -0
  160. package/dist/gods//346/234/210/345/276/267/350/264/265/344/272/272.js.map +1 -0
  161. package/dist/gods//346/241/203/350/212/261.d.ts +9 -0
  162. package/dist/gods//346/241/203/350/212/261.js +14 -0
  163. package/dist/gods//346/241/203/350/212/261.js.map +1 -0
  164. package/dist/gods//346/265/201/351/234/236.d.ts +9 -0
  165. package/dist/gods//346/265/201/351/234/236.js +7 -0
  166. package/dist/gods//346/265/201/351/234/236.js.map +1 -0
  167. package/dist/gods//347/201/276/347/205/236.d.ts +9 -0
  168. package/dist/gods//347/201/276/347/205/236.js +10 -0
  169. package/dist/gods//347/201/276/347/205/236.js.map +1 -0
  170. package/dist/gods//347/246/204/347/245/236.d.ts +9 -0
  171. package/dist/gods//347/246/204/347/245/236.js +7 -0
  172. package/dist/gods//347/246/204/347/245/236.js.map +1 -0
  173. package/dist/gods//347/246/217/346/230/237/350/264/265/344/272/272.d.ts +9 -0
  174. package/dist/gods//347/246/217/346/230/237/350/264/265/344/272/272.js +8 -0
  175. package/dist/gods//347/246/217/346/230/237/350/264/265/344/272/272.js.map +1 -0
  176. package/dist/gods//347/251/272/344/272/241.d.ts +9 -0
  177. package/dist/gods//347/251/272/344/272/241.js +15 -0
  178. package/dist/gods//347/251/272/344/272/241.js.map +1 -0
  179. package/dist/gods//347/253/245/345/255/220/347/205/236.d.ts +9 -0
  180. package/dist/gods//347/253/245/345/255/220/347/205/236.js +28 -0
  181. package/dist/gods//347/253/245/345/255/220/347/205/236.js.map +1 -0
  182. package/dist/gods//347/272/242/350/211/263.d.ts +9 -0
  183. package/dist/gods//347/272/242/350/211/263.js +7 -0
  184. package/dist/gods//347/272/242/350/211/263.js.map +1 -0
  185. package/dist/gods//347/272/242/351/270/276.d.ts +9 -0
  186. package/dist/gods//347/272/242/351/270/276.js +7 -0
  187. package/dist/gods//347/272/242/351/270/276.js.map +1 -0
  188. package/dist/gods//347/276/212/345/210/203.d.ts +9 -0
  189. package/dist/gods//347/276/212/345/210/203.js +7 -0
  190. package/dist/gods//347/276/212/345/210/203.js.map +1 -0
  191. package/dist/gods//350/241/200/345/210/203.d.ts +9 -0
  192. package/dist/gods//350/241/200/345/210/203.js +7 -0
  193. package/dist/gods//350/241/200/345/210/203.js.map +1 -0
  194. package/dist/gods//350/257/215/351/246/206.d.ts +9 -0
  195. package/dist/gods//350/257/215/351/246/206.js +14 -0
  196. package/dist/gods//350/257/215/351/246/206.js.map +1 -0
  197. package/dist/gods//350/277/233/347/245/236.d.ts +9 -0
  198. package/dist/gods//350/277/233/347/245/236.js +7 -0
  199. package/dist/gods//350/277/233/347/245/236.js.map +1 -0
  200. package/dist/gods//351/207/221/347/245/236.d.ts +9 -0
  201. package/dist/gods//351/207/221/347/245/236.js +13 -0
  202. package/dist/gods//351/207/221/347/245/236.js.map +1 -0
  203. package/dist/gods//351/207/221/350/210/206.d.ts +9 -0
  204. package/dist/gods//351/207/221/350/210/206.js +8 -0
  205. package/dist/gods//351/207/221/350/210/206.js.map +1 -0
  206. package/dist/gods//351/230/264/345/267/256/351/230/263/351/224/231.d.ts +9 -0
  207. package/dist/gods//351/230/264/345/267/256/351/230/263/351/224/231.js +7 -0
  208. package/dist/gods//351/230/264/345/267/256/351/230/263/351/224/231.js.map +1 -0
  209. package/dist/gods//351/232/224/350/247/222/347/205/236.d.ts +9 -0
  210. package/dist/gods//351/232/224/350/247/222/347/205/236.js +7 -0
  211. package/dist/gods//351/232/224/350/247/222/347/205/236.js.map +1 -0
  212. package/dist/gods//351/243/236/345/210/203.d.ts +9 -0
  213. package/dist/gods//351/243/236/345/210/203.js +7 -0
  214. package/dist/gods//351/243/236/345/210/203.js.map +1 -0
  215. package/dist/gods//351/251/277/351/251/254.d.ts +9 -0
  216. package/dist/gods//351/251/277/351/251/254.js +14 -0
  217. package/dist/gods//351/251/277/351/251/254.js.map +1 -0
  218. package/dist/gods//351/255/201/347/275/241.d.ts +9 -0
  219. package/dist/gods//351/255/201/347/275/241.js +7 -0
  220. package/dist/gods//351/255/201/347/275/241.js.map +1 -0
  221. package/dist/index.d.ts +11 -0
  222. package/dist/index.js +12 -0
  223. package/dist/index.js.map +1 -0
  224. package/dist/relations/index.d.ts +53 -0
  225. package/dist/relations/index.js +65 -0
  226. package/dist/relations/index.js.map +1 -0
  227. package/dist/relations/shared.d.ts +16 -0
  228. package/dist/relations/shared.js +71 -0
  229. package/dist/relations/shared.js.map +1 -0
  230. package/dist/relations//344/274/217/345/220/237.d.ts +3 -0
  231. package/dist/relations//344/274/217/345/220/237.js +17 -0
  232. package/dist/relations//344/274/217/345/220/237.js.map +1 -0
  233. package/dist/relations//345/217/214/345/206/262.d.ts +3 -0
  234. package/dist/relations//345/217/214/345/206/262.js +20 -0
  235. package/dist/relations//345/217/214/345/206/262.js.map +1 -0
  236. package/dist/relations//345/217/214/345/220/210.d.ts +3 -0
  237. package/dist/relations//345/217/214/345/220/210.js +19 -0
  238. package/dist/relations//345/217/214/345/220/210.js.map +1 -0
  239. package/dist/relations//345/234/260/346/224/257/344/270/211/344/274/232.d.ts +3 -0
  240. package/dist/relations//345/234/260/346/224/257/344/270/211/344/274/232.js +37 -0
  241. package/dist/relations//345/234/260/346/224/257/344/270/211/344/274/232.js.map +1 -0
  242. package/dist/relations//345/234/260/346/224/257/344/270/211/345/210/221.d.ts +3 -0
  243. package/dist/relations//345/234/260/346/224/257/344/270/211/345/210/221.js +19 -0
  244. package/dist/relations//345/234/260/346/224/257/344/270/211/345/210/221.js.map +1 -0
  245. package/dist/relations//345/234/260/346/224/257/344/270/211/345/220/210.d.ts +3 -0
  246. package/dist/relations//345/234/260/346/224/257/344/270/211/345/220/210.js +20 -0
  247. package/dist/relations//345/234/260/346/224/257/344/270/211/345/220/210.js.map +1 -0
  248. package/dist/relations//345/234/260/346/224/257/345/206/262.d.ts +3 -0
  249. package/dist/relations//345/234/260/346/224/257/345/206/262.js +16 -0
  250. package/dist/relations//345/234/260/346/224/257/345/206/262.js.map +1 -0
  251. package/dist/relations//345/234/260/346/224/257/345/210/221.d.ts +3 -0
  252. package/dist/relations//345/234/260/346/224/257/345/210/221.js +29 -0
  253. package/dist/relations//345/234/260/346/224/257/345/210/221.js.map +1 -0
  254. package/dist/relations//345/234/260/346/224/257/345/215/212/345/220/210.d.ts +3 -0
  255. package/dist/relations//345/234/260/346/224/257/345/215/212/345/220/210.js +45 -0
  256. package/dist/relations//345/234/260/346/224/257/345/215/212/345/220/210.js.map +1 -0
  257. package/dist/relations//345/234/260/346/224/257/345/220/210.d.ts +3 -0
  258. package/dist/relations//345/234/260/346/224/257/345/220/210.js +17 -0
  259. package/dist/relations//345/234/260/346/224/257/345/220/210.js.map +1 -0
  260. package/dist/relations//345/234/260/346/224/257/345/256/263.d.ts +3 -0
  261. package/dist/relations//345/234/260/346/224/257/345/256/263.js +16 -0
  262. package/dist/relations//345/234/260/346/224/257/345/256/263.js.map +1 -0
  263. package/dist/relations//345/234/260/346/224/257/346/232/227/345/220/210.d.ts +3 -0
  264. package/dist/relations//345/234/260/346/224/257/346/232/227/345/220/210.js +16 -0
  265. package/dist/relations//345/234/260/346/224/257/346/232/227/345/220/210.js.map +1 -0
  266. package/dist/relations//345/234/260/346/224/257/347/240/264.d.ts +3 -0
  267. package/dist/relations//345/234/260/346/224/257/347/240/264.js +16 -0
  268. package/dist/relations//345/234/260/346/224/257/347/240/264.js.map +1 -0
  269. package/dist/relations//345/244/251/345/271/262/345/206/262.d.ts +3 -0
  270. package/dist/relations//345/244/251/345/271/262/345/206/262.js +16 -0
  271. package/dist/relations//345/244/251/345/271/262/345/206/262.js.map +1 -0
  272. package/dist/relations//345/244/251/345/271/262/345/220/210.d.ts +3 -0
  273. package/dist/relations//345/244/251/345/271/262/345/220/210.js +17 -0
  274. package/dist/relations//345/244/251/345/271/262/345/220/210.js.map +1 -0
  275. package/dist/relations//345/244/251/345/271/262/345/260/205.d.ts +3 -0
  276. package/dist/relations//345/244/251/345/271/262/345/260/205.js +16 -0
  277. package/dist/relations//345/244/251/345/271/262/345/260/205.js.map +1 -0
  278. package/dist/relations//346/213/261.d.ts +3 -0
  279. package/dist/relations//346/213/261.js +55 -0
  280. package/dist/relations//346/213/261.js.map +1 -0
  281. package/package.json +18 -0
package/README.md ADDED
@@ -0,0 +1,1390 @@
1
+ # bazi
2
+
3
+ 八字计算工具库。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ npm i cantian-bazi
9
+ ```
10
+
11
+ ## Bazi
12
+
13
+ ### `Bazi.fromName(name)`
14
+
15
+ 根据三柱/四柱字符串创建 `Bazi` 实例。
16
+
17
+ #### 1. 参数说明
18
+
19
+ - `name: string`
20
+ 三柱(六字)或四柱(八字)字符串(不含空格),例如:`乙巳己丑戊申甲寅`。
21
+
22
+ #### 2. 返回说明
23
+
24
+ - `Bazi`
25
+ 输入不合法时会抛错。
26
+
27
+ #### 3. 调用示例代码
28
+
29
+ ```ts
30
+ import { Bazi } from 'cantian-bazi';
31
+
32
+ const bazi = Bazi.fromName('乙巳己丑戊申甲寅');
33
+ console.log(bazi.getName());
34
+ ```
35
+
36
+ ### `bazi.getDecadeFortuneStart(timestamp, gender)`
37
+
38
+ 计算起运方向、起运换算量和首步大运干支。
39
+
40
+ #### 1. 参数说明
41
+
42
+ - `timestamp: number`
43
+ 出生时间戳(毫秒)。
44
+ - `gender: 0 | 1`
45
+ `0` 女,`1` 男。
46
+
47
+ #### 2. 返回说明
48
+
49
+ - `{ forward: boolean; yearCount: number; monthCount: number; dayCount: number; hourCount: number; minuteCount: number; targetSolarTerm: SolarTerm; startPillar: string }`
50
+ - `forward: boolean`
51
+ 是否顺排大运(`true` 顺排,`false` 逆排)。
52
+ - `yearCount: number`
53
+ 起运增量里的“年”部分(按 `3天=1年` 折算)。
54
+ - `monthCount: number`
55
+ 起运增量里的“月”部分(按 `6小时=1月` 折算)。
56
+ - `dayCount: number`
57
+ 起运增量里的“日”部分(按 `12分钟=1日` 折算)。
58
+ - `hourCount: number`
59
+ 起运增量里的“时”部分(按 `30秒=1时` 折算)。
60
+ - `minuteCount: number`
61
+ 起运增量里的“分”部分(秒再折算成分钟值)。
62
+ - `targetSolarTerm: SolarTerm`
63
+ 起运换算所使用的目标“节”对象。
64
+ - `startPillar: string`
65
+ 第一段大运的干支。
66
+
67
+ #### 3. 调用示例代码
68
+
69
+ ```ts
70
+ import { Bazi } from 'cantian-bazi';
71
+
72
+ const bazi = Bazi.fromName('乙巳己丑戊申甲寅')!;
73
+ const result = bazi.getDecadeFortuneStart(1770060660000, 1);
74
+
75
+ console.log(result);
76
+ ```
77
+
78
+ ### `bazi.getSixtyCycles()`
79
+
80
+ 返回当前八字的柱对象数组(年/月/日/时)。
81
+
82
+ #### 1. 参数说明
83
+
84
+ - 无参数。
85
+
86
+ #### 2. 返回说明
87
+
88
+ - `readonly SixtyCycle[]`
89
+ 按年、月、日、时顺序返回柱对象数组。
90
+
91
+ #### 3. 调用示例代码
92
+
93
+ ```ts
94
+ const bazi = Bazi.fromName('乙巳己丑戊申甲寅')!;
95
+ console.log(bazi.getSixtyCycles().map((x) => x.getName()));
96
+ ```
97
+
98
+ ### `bazi.getSelfSeats()`
99
+
100
+ 返回每一柱对应的自坐结果,取值范围为:长生、沐浴、冠带、临官、帝旺、衰、病、死、墓、绝、胎、养。
101
+
102
+ #### 1. 参数说明
103
+
104
+ - 无参数。
105
+
106
+ #### 2. 返回说明
107
+
108
+ - `string[]`
109
+ 返回每一柱的自坐结果数组。
110
+
111
+ #### 3. 调用示例代码
112
+
113
+ ```ts
114
+ const bazi = Bazi.fromName('乙巳己丑戊申甲寅')!;
115
+ console.log(bazi.getSelfSeats());
116
+ ```
117
+
118
+ ### `bazi.getStarFortunes()`
119
+
120
+ 返回每一柱的星运结果数组,取值范围为:长生、沐浴、冠带、临官、帝旺、衰、病、死、墓、绝、胎、养。
121
+
122
+ #### 1. 参数说明
123
+
124
+ - 无参数。
125
+
126
+ #### 2. 返回说明
127
+
128
+ - `string[]`
129
+ 返回每一柱对应的十二长生(以日干计算)数组。
130
+
131
+ #### 3. 调用示例代码
132
+
133
+ ```ts
134
+ const bazi = Bazi.fromName('乙巳己丑戊申甲寅')!;
135
+ console.log(bazi.getStarFortunes());
136
+ ```
137
+
138
+ ### `bazi.getName()`
139
+
140
+ 返回当前实例的拼接柱字符串。
141
+
142
+ #### 1. 参数说明
143
+
144
+ - 无参数。
145
+
146
+ #### 2. 返回说明
147
+
148
+ - `string`
149
+ 返回拼接后的三柱/四柱字符串。
150
+
151
+ #### 3. 调用示例代码
152
+
153
+ ```ts
154
+ const bazi = Bazi.fromName('乙巳己丑戊申甲寅')!;
155
+ console.log(bazi.getName()); // 乙巳己丑戊申甲寅
156
+ ```
157
+
158
+ ## SixtyCycleTime
159
+
160
+ ### `SixtyCycleTime.fromTime(options)`
161
+
162
+ 按给定时间戳和时间偏移函数构建四柱时间实例。
163
+
164
+ #### 1. 参数说明
165
+
166
+ - `options.timestamp: number`
167
+ 要计算四柱的绝对时间戳(毫秒)。
168
+ - `options.timeOffsetAt?: (timestamp: number, solarTerm?: SolarTerm) => number`
169
+ 给定时间戳返回对应时间偏移(毫秒);如果当前计算点是“节”,会同时传入 `solarTerm`;默认东八区固定偏移。
170
+ - `options.dayAtMidnight?: boolean`
171
+ `false/undefined` 表示 23:00 换日,`true` 表示 00:00 换日。
172
+
173
+ #### 2. 返回说明
174
+
175
+ - `SixtyCycleTime`
176
+
177
+ #### 3. 调用示例代码
178
+
179
+ ```ts
180
+ import { SixtyCycleTime } from 'cantian-bazi';
181
+
182
+ const t = SixtyCycleTime.fromTime({
183
+ timestamp: Date.parse('2026-02-03T03:31:00+08:00'),
184
+ timeOffsetAt: () => 8 * 3600000,
185
+ });
186
+ ```
187
+
188
+ ### `SixtyCycleTime.findFirst(options)`
189
+
190
+ 从起点开始查找首个命中指定柱条件的时间实例。
191
+
192
+ #### 1. 参数说明
193
+
194
+ - `options.startTimestamp: number`
195
+ 查找起点(毫秒),返回结果满足 `>= startTimestamp`。
196
+ - `options.pillars: readonly SixtyCycle[]`
197
+ 目标柱数组,按年/月/日/时顺序,支持 1~4 柱。
198
+ - `options.timeOffsetAt?: (timestamp: number, solarTerm?: SolarTerm) => number`
199
+ 给定时间戳返回对应时间偏移(毫秒);如果当前计算点是“节”,会同时传入 `solarTerm`;默认东八区固定偏移。
200
+ - `options.dayAtMidnight?: boolean`
201
+ 换日规则:`false/undefined` 为 23:00 换日,`true` 为 00:00 换日。
202
+ - `options.maxYear?: number`
203
+ 查找上限年份(公历年);超过后停止并返回 `undefined`。
204
+
205
+ #### 2. 返回说明
206
+
207
+ - `SixtyCycleTime | undefined`
208
+ 返回 `>= startTimestamp` 的首个命中实例;找不到返回 `undefined`。
209
+
210
+ #### 3. 调用示例代码
211
+
212
+ ```ts
213
+ import { Bazi, SixtyCycleTime } from 'cantian-bazi';
214
+
215
+ const bazi = Bazi.fromName('乙巳己丑戊申甲寅')!;
216
+ const first = SixtyCycleTime.findFirst({
217
+ startTimestamp: Date.parse('2020-01-01T00:00:00+08:00'),
218
+ pillars: bazi.getSixtyCycles(),
219
+ timeOffsetAt: () => 8 * 3600000,
220
+ maxYear: 2100,
221
+ });
222
+ ```
223
+
224
+ ### `SixtyCycleTime.split(options)`
225
+
226
+ 按指定柱粒度切分时间区间并返回切点实例。
227
+
228
+ #### 1. 参数说明
229
+
230
+ - `options.startTimestamp: number`
231
+ 切割区间起点(毫秒,包含)。
232
+ - `options.endTimestamp: number`
233
+ 切割区间终点(毫秒,不包含)。
234
+ - `options.pillarCount: 1 | 2 | 3 | 4`
235
+ 切割粒度:1 年柱,2 月柱,3 日柱,4 时柱。
236
+ - `options.timeOffsetAt?: (timestamp: number, solarTerm?: SolarTerm) => number`
237
+ 给定时间戳返回对应时间偏移(毫秒);如果当前计算点是“节”,会同时传入 `solarTerm`;默认东八区固定偏移。
238
+ - `options.dayAtMidnight?: boolean`
239
+ 换日规则:`false/undefined` 为 23:00 换日,`true` 为 00:00 换日。
240
+
241
+ #### 2. 返回说明
242
+
243
+ - `SixtyCycleTime[]`
244
+ 返回区间切割后的切点实例列表。
245
+
246
+ #### 3. 调用示例代码
247
+
248
+ ```ts
249
+ import { SixtyCycleTime } from 'cantian-bazi';
250
+
251
+ const points = SixtyCycleTime.split({
252
+ startTimestamp: Date.parse('2026-02-04T00:00:00+08:00'),
253
+ endTimestamp: Date.parse('2026-02-05T00:00:00+08:00'),
254
+ pillarCount: 3,
255
+ timeOffsetAt: () => 8 * 3600000,
256
+ });
257
+ ```
258
+
259
+ ### `sixtyCycleTime.getSixtyCycles()`
260
+
261
+ 返回当前时刻对应的四柱对象。
262
+
263
+ #### 1. 参数说明
264
+
265
+ - 无参数。
266
+
267
+ #### 2. 返回说明
268
+
269
+ - `readonly [SixtyCycle, SixtyCycle, SixtyCycle, SixtyCycle]`
270
+
271
+ #### 3. 调用示例代码
272
+
273
+ ```ts
274
+ const t = SixtyCycleTime.fromTime({ timestamp: Date.now() });
275
+ console.log(t.getSixtyCycles().map((x) => x.getName()));
276
+ ```
277
+
278
+ ### `sixtyCycleTime.getName()`
279
+
280
+ 返回当前时刻对应的四柱字符串。
281
+
282
+ #### 1. 参数说明
283
+
284
+ - 无参数。
285
+
286
+ #### 2. 返回说明
287
+
288
+ - `string`
289
+ 四柱字符串。
290
+
291
+ #### 3. 调用示例代码
292
+
293
+ ```ts
294
+ const t = SixtyCycleTime.fromTime({ timestamp: Date.now() });
295
+ console.log(t.getName());
296
+ ```
297
+
298
+ ### `sixtyCycleTime.getBazi()`
299
+
300
+ 将当前四柱时间实例转换为 `Bazi` 实例。
301
+
302
+ #### 1. 参数说明
303
+
304
+ - 无参数。
305
+
306
+ #### 2. 返回说明
307
+
308
+ - `Bazi`
309
+
310
+ #### 3. 调用示例代码
311
+
312
+ ```ts
313
+ const t = SixtyCycleTime.fromTime({ timestamp: Date.now() });
314
+ const bazi = t.getBazi();
315
+ console.log(bazi.getName());
316
+ ```
317
+
318
+ ### `sixtyCycleTime.next(maxYear?)`
319
+
320
+ 返回下一个相邻八字切点(节或时辰切换)。
321
+
322
+ #### 1. 参数说明
323
+
324
+ - `maxYear?: number`
325
+ 允许推进到的最大公历年;超过时返回 `undefined`。
326
+
327
+ #### 2. 返回说明
328
+
329
+ - `SixtyCycleTime | undefined`
330
+ 超过 `maxYear` 时返回 `undefined`。
331
+
332
+ #### 3. 调用示例代码
333
+
334
+ ```ts
335
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).next(2100);
336
+ ```
337
+
338
+ ### `sixtyCycleTime.nextYear(maxYear?)`
339
+
340
+ 返回下一个年柱切换时刻(立春切换)。
341
+
342
+ #### 1. 参数说明
343
+
344
+ - `maxYear?: number`
345
+ 允许推进到的最大公历年;超过时返回 `undefined`。
346
+
347
+ #### 2. 返回说明
348
+
349
+ - `SixtyCycleTime | undefined`
350
+
351
+ #### 3. 调用示例代码
352
+
353
+ ```ts
354
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).nextYear(2100);
355
+ ```
356
+
357
+ ### `sixtyCycleTime.nextMonth(maxYear?)`
358
+
359
+ 返回下一个月柱切换时刻(按节切换)。
360
+
361
+ #### 1. 参数说明
362
+
363
+ - `maxYear?: number`
364
+ 允许推进到的最大公历年;超过时返回 `undefined`。
365
+
366
+ #### 2. 返回说明
367
+
368
+ - `SixtyCycleTime | undefined`
369
+
370
+ #### 3. 调用示例代码
371
+
372
+ ```ts
373
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).nextMonth(2100);
374
+ ```
375
+
376
+ ### `sixtyCycleTime.nextDay(maxYear?)`
377
+
378
+ 返回下一个日柱切换时刻。
379
+
380
+ #### 1. 参数说明
381
+
382
+ - `maxYear?: number`
383
+ 允许推进到的最大公历年;超过时返回 `undefined`。
384
+
385
+ #### 2. 返回说明
386
+
387
+ - `SixtyCycleTime | undefined`
388
+
389
+ #### 3. 调用示例代码
390
+
391
+ ```ts
392
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).nextDay(2100);
393
+ ```
394
+
395
+ ### `sixtyCycleTime.nextHour(maxYear?)`
396
+
397
+ 返回下一个时柱切换时刻。
398
+
399
+ #### 1. 参数说明
400
+
401
+ - `maxYear?: number`
402
+ 允许推进到的最大公历年;超过时返回 `undefined`。
403
+
404
+ #### 2. 返回说明
405
+
406
+ - `SixtyCycleTime | undefined`
407
+
408
+ #### 3. 调用示例代码
409
+
410
+ ```ts
411
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).nextHour(2100);
412
+ ```
413
+
414
+ ### `sixtyCycleTime.nextSameYear(maxYear?)`
415
+
416
+ 返回下一个年柱相同的时刻。
417
+
418
+ #### 1. 参数说明
419
+
420
+ - `maxYear?: number`
421
+ 允许推进到的最大公历年;超过时返回 `undefined`。
422
+
423
+ #### 2. 返回说明
424
+
425
+ - `SixtyCycleTime | undefined`
426
+
427
+ #### 3. 调用示例代码
428
+
429
+ ```ts
430
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).nextSameYear(2300);
431
+ ```
432
+
433
+ ### `sixtyCycleTime.nextSameMonth(maxYear?)`
434
+
435
+ 返回下一个年柱与月柱都相同的时刻。
436
+
437
+ #### 1. 参数说明
438
+
439
+ - `maxYear?: number`
440
+ 允许推进到的最大公历年;超过时返回 `undefined`。
441
+
442
+ #### 2. 返回说明
443
+
444
+ - `SixtyCycleTime | undefined`
445
+
446
+ #### 3. 调用示例代码
447
+
448
+ ```ts
449
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).nextSameMonth(2300);
450
+ ```
451
+
452
+ ### `sixtyCycleTime.nextSameDay(maxYear?)`
453
+
454
+ 返回下一个年/月/日三柱相同的时刻。
455
+
456
+ #### 1. 参数说明
457
+
458
+ - `maxYear?: number`
459
+ 允许推进到的最大公历年;超过时返回 `undefined`。
460
+
461
+ #### 2. 返回说明
462
+
463
+ - `SixtyCycleTime | undefined`
464
+
465
+ #### 3. 调用示例代码
466
+
467
+ ```ts
468
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).nextSameDay(2100);
469
+ ```
470
+
471
+ ### `sixtyCycleTime.nextSameHour(maxYear?)`
472
+
473
+ 返回下一个四柱完全相同的时刻。
474
+
475
+ #### 1. 参数说明
476
+
477
+ - `maxYear?: number`
478
+ 允许推进到的最大公历年;超过时返回 `undefined`。
479
+
480
+ #### 2. 返回说明
481
+
482
+ - `SixtyCycleTime | undefined`
483
+
484
+ #### 3. 调用示例代码
485
+
486
+ ```ts
487
+ const next = SixtyCycleTime.fromTime({ timestamp: Date.now() }).nextSameHour(2100);
488
+ ```
489
+
490
+ ## HeavenStem
491
+
492
+ ### `HeavenStem.fromIndex(index)`
493
+
494
+ 按索引获取天干实例(循环取模)。
495
+
496
+ #### 1. 参数说明
497
+
498
+ - `index: number`
499
+ 天干索引(会按 10 循环)。
500
+
501
+ #### 2. 返回说明
502
+
503
+ - `HeavenStem`
504
+
505
+ #### 3. 调用示例代码
506
+
507
+ ```ts
508
+ import { HeavenStem } from 'cantian-bazi';
509
+
510
+ const stem = HeavenStem.fromIndex(0);
511
+ console.log(stem.getName()); // 甲
512
+ ```
513
+
514
+ ### `HeavenStem.fromName(name)`
515
+
516
+ 按名称获取天干实例。
517
+
518
+ #### 1. 参数说明
519
+
520
+ - `name: string`
521
+ 天干名称(甲乙丙丁戊己庚辛壬癸)。
522
+
523
+ #### 2. 返回说明
524
+
525
+ - `HeavenStem`
526
+
527
+ #### 3. 调用示例代码
528
+
529
+ ```ts
530
+ const stem = HeavenStem.fromName('丙');
531
+ console.log(stem.index); // 2
532
+ ```
533
+
534
+ ### `heavenStem.next(offset?)`
535
+
536
+ 获取偏移后的天干实例。
537
+
538
+ #### 1. 参数说明
539
+
540
+ - `offset?: number`
541
+ 偏移步数,默认 `1`。
542
+
543
+ #### 2. 返回说明
544
+
545
+ - `HeavenStem`
546
+
547
+ #### 3. 调用示例代码
548
+
549
+ ```ts
550
+ const next = HeavenStem.fromName('甲').next(1);
551
+ console.log(next.getName()); // 乙
552
+ ```
553
+
554
+ ### `heavenStem.getName()`
555
+
556
+ 返回天干名称。
557
+
558
+ #### 1. 参数说明
559
+
560
+ - 无参数。
561
+
562
+ #### 2. 返回说明
563
+
564
+ - `string`
565
+ 天干名称。
566
+
567
+ #### 3. 调用示例代码
568
+
569
+ ```ts
570
+ console.log(HeavenStem.fromIndex(6).getName()); // 庚
571
+ ```
572
+
573
+ ### `heavenStem.getYinyang()`
574
+
575
+ 返回天干阴阳。
576
+
577
+ #### 1. 参数说明
578
+
579
+ - 无参数。
580
+
581
+ #### 2. 返回说明
582
+
583
+ - `0 | 1`
584
+ `0` 阴,`1` 阳。
585
+
586
+ #### 3. 调用示例代码
587
+
588
+ ```ts
589
+ console.log(HeavenStem.fromName('乙').getYinyang());
590
+ ```
591
+
592
+ ### `heavenStem.getWuxing()`
593
+
594
+ 返回天干对应五行实例。
595
+
596
+ #### 1. 参数说明
597
+
598
+ - 无参数。
599
+
600
+ #### 2. 返回说明
601
+
602
+ - `Wuxing`
603
+
604
+ #### 3. 调用示例代码
605
+
606
+ ```ts
607
+ console.log(HeavenStem.fromName('甲').getWuxing().getName()); // 木
608
+ ```
609
+
610
+ ### `heavenStem.getStarFortune(branch)`
611
+
612
+ 按地支计算天干十二长生。
613
+
614
+ #### 1. 参数说明
615
+
616
+ - `branch: EarthBranch`
617
+ 参与计算的地支实例。
618
+
619
+ #### 2. 返回说明
620
+
621
+ - `string`
622
+ 取值范围:长生、沐浴、冠带、临官、帝旺、衰、病、死、墓、绝、胎、养。
623
+
624
+ #### 3. 调用示例代码
625
+
626
+ ```ts
627
+ import { EarthBranch } from 'cantian-bazi';
628
+
629
+ const fortune = HeavenStem.fromName('甲').getStarFortune(EarthBranch.fromName('亥'));
630
+ console.log(fortune);
631
+ ```
632
+
633
+ ### `heavenStem.getTenGod(target)`
634
+
635
+ 按另一个天干计算十神关系。
636
+
637
+ #### 1. 参数说明
638
+
639
+ - `target: HeavenStem`
640
+ 目标天干实例。
641
+
642
+ #### 2. 返回说明
643
+
644
+ - `string`
645
+ 取值范围:比肩、劫财、食神、伤官、偏财、正财、七杀、正官、偏印、正印。
646
+
647
+ #### 3. 调用示例代码
648
+
649
+ ```ts
650
+ const me = HeavenStem.fromName('甲');
651
+ const target = HeavenStem.fromName('庚');
652
+ console.log(me.getTenGod(target));
653
+ ```
654
+
655
+ ## EarthBranch
656
+
657
+ ### `EarthBranch.fromIndex(index)`
658
+
659
+ 按索引获取地支实例(循环取模)。
660
+
661
+ #### 1. 参数说明
662
+
663
+ - `index: number`
664
+ 地支索引(会按 12 循环)。
665
+
666
+ #### 2. 返回说明
667
+
668
+ - `EarthBranch`
669
+
670
+ #### 3. 调用示例代码
671
+
672
+ ```ts
673
+ import { EarthBranch } from 'cantian-bazi';
674
+
675
+ console.log(EarthBranch.fromIndex(0).getName()); // 子
676
+ ```
677
+
678
+ ### `EarthBranch.fromName(name)`
679
+
680
+ 按名称获取地支实例。
681
+
682
+ #### 1. 参数说明
683
+
684
+ - `name: string`
685
+ 地支名称(子丑寅卯辰巳午未申酉戌亥)。
686
+
687
+ #### 2. 返回说明
688
+
689
+ - `EarthBranch`
690
+
691
+ #### 3. 调用示例代码
692
+
693
+ ```ts
694
+ const branch = EarthBranch.fromName('酉');
695
+ console.log(branch.index); // 9
696
+ ```
697
+
698
+ ### `earthBranch.next(offset?)`
699
+
700
+ 获取偏移后的地支实例。
701
+
702
+ #### 1. 参数说明
703
+
704
+ - `offset?: number`
705
+ 偏移步数,默认 `1`。
706
+
707
+ #### 2. 返回说明
708
+
709
+ - `EarthBranch`
710
+
711
+ #### 3. 调用示例代码
712
+
713
+ ```ts
714
+ console.log(EarthBranch.fromName('亥').next(1).getName()); // 子
715
+ ```
716
+
717
+ ### `earthBranch.getName()`
718
+
719
+ 返回地支名称。
720
+
721
+ #### 1. 参数说明
722
+
723
+ - 无参数。
724
+
725
+ #### 2. 返回说明
726
+
727
+ - `string`
728
+ 地支名称。
729
+
730
+ #### 3. 调用示例代码
731
+
732
+ ```ts
733
+ console.log(EarthBranch.fromIndex(4).getName()); // 辰
734
+ ```
735
+
736
+ ### `earthBranch.getYinyang()`
737
+
738
+ 返回地支阴阳。
739
+
740
+ #### 1. 参数说明
741
+
742
+ - 无参数。
743
+
744
+ #### 2. 返回说明
745
+
746
+ - `0 | 1`
747
+ `0` 阴,`1` 阳。
748
+
749
+ #### 3. 调用示例代码
750
+
751
+ ```ts
752
+ console.log(EarthBranch.fromName('午').getYinyang());
753
+ ```
754
+
755
+ ### `earthBranch.getWuxing()`
756
+
757
+ 返回地支对应五行实例。
758
+
759
+ #### 1. 参数说明
760
+
761
+ - 无参数。
762
+
763
+ #### 2. 返回说明
764
+
765
+ - `Wuxing`
766
+
767
+ #### 3. 调用示例代码
768
+
769
+ ```ts
770
+ console.log(EarthBranch.fromName('申').getWuxing().getName()); // 金
771
+ ```
772
+
773
+ ### `earthBranch.getZodiac()`
774
+
775
+ 返回地支对应生肖。
776
+
777
+ #### 1. 参数说明
778
+
779
+ - 无参数。
780
+
781
+ #### 2. 返回说明
782
+
783
+ - `string`
784
+ 生肖名称(鼠牛虎兔龙蛇马羊猴鸡狗猪)。
785
+
786
+ #### 3. 调用示例代码
787
+
788
+ ```ts
789
+ console.log(EarthBranch.fromName('寅').getZodiac()); // 虎
790
+ ```
791
+
792
+ ### `earthBranch.getHiddenStems()`
793
+
794
+ 返回地支藏干列表。
795
+
796
+ #### 1. 参数说明
797
+
798
+ - 无参数。
799
+
800
+ #### 2. 返回说明
801
+
802
+ - `HeavenStem[]`
803
+ 藏干天干实例数组。
804
+
805
+ #### 3. 调用示例代码
806
+
807
+ ```ts
808
+ console.log(
809
+ EarthBranch.fromName('丑')
810
+ .getHiddenStems()
811
+ .map((x) => x.getName()),
812
+ );
813
+ ```
814
+
815
+ ### `earthBranch.getMonthIndex()`
816
+
817
+ 返回月令索引(以寅月为 0)。
818
+
819
+ #### 1. 参数说明
820
+
821
+ - 无参数。
822
+
823
+ #### 2. 返回说明
824
+
825
+ - `number`
826
+ 月令索引,范围 `0~11`。
827
+
828
+ #### 3. 调用示例代码
829
+
830
+ ```ts
831
+ console.log(EarthBranch.fromName('寅').getMonthIndex()); // 0
832
+ ```
833
+
834
+ ## SixtyCycle
835
+
836
+ ### `SixtyCycle.fromIndex(index)`
837
+
838
+ 按索引获取六十甲子实例(循环取模)。
839
+
840
+ #### 1. 参数说明
841
+
842
+ - `index: number`
843
+ 六十甲子索引(会按 60 循环)。
844
+
845
+ #### 2. 返回说明
846
+
847
+ - `SixtyCycle`
848
+
849
+ #### 3. 调用示例代码
850
+
851
+ ```ts
852
+ import { SixtyCycle } from 'cantian-bazi';
853
+
854
+ console.log(SixtyCycle.fromIndex(0).getName()); // 甲子
855
+ ```
856
+
857
+ ### `SixtyCycle.fromName(name)`
858
+
859
+ 按干支名称获取六十甲子实例。
860
+
861
+ #### 1. 参数说明
862
+
863
+ - `name: string`
864
+ 干支名称,例如:`甲子`。
865
+
866
+ #### 2. 返回说明
867
+
868
+ - `SixtyCycle`
869
+ 无效干支组合会抛错。
870
+
871
+ #### 3. 调用示例代码
872
+
873
+ ```ts
874
+ const cycle = SixtyCycle.fromName('丙寅');
875
+ console.log(cycle.index);
876
+ ```
877
+
878
+ ### `sixtyCycle.next(offset?)`
879
+
880
+ 获取偏移后的六十甲子实例。
881
+
882
+ #### 1. 参数说明
883
+
884
+ - `offset?: number`
885
+ 偏移步数,默认 `1`。
886
+
887
+ #### 2. 返回说明
888
+
889
+ - `SixtyCycle`
890
+
891
+ #### 3. 调用示例代码
892
+
893
+ ```ts
894
+ console.log(SixtyCycle.fromName('癸亥').next(1).getName()); // 甲子
895
+ ```
896
+
897
+ ### `sixtyCycle.getName()`
898
+
899
+ 返回干支名称。
900
+
901
+ #### 1. 参数说明
902
+
903
+ - 无参数。
904
+
905
+ #### 2. 返回说明
906
+
907
+ - `string`
908
+ 干支名称。
909
+
910
+ #### 3. 调用示例代码
911
+
912
+ ```ts
913
+ console.log(SixtyCycle.fromIndex(10).getName());
914
+ ```
915
+
916
+ ### `sixtyCycle.getNayin()`
917
+
918
+ 返回纳音。
919
+
920
+ #### 1. 参数说明
921
+
922
+ - 无参数。
923
+
924
+ #### 2. 返回说明
925
+
926
+ - `string`
927
+ 纳音名称。
928
+
929
+ #### 3. 调用示例代码
930
+
931
+ ```ts
932
+ console.log(SixtyCycle.fromName('甲子').getNayin()); // 海中金
933
+ ```
934
+
935
+ ### `sixtyCycle.getHeavenStem()`
936
+
937
+ 返回对应天干实例。
938
+
939
+ #### 1. 参数说明
940
+
941
+ - 无参数。
942
+
943
+ #### 2. 返回说明
944
+
945
+ - `HeavenStem`
946
+
947
+ #### 3. 调用示例代码
948
+
949
+ ```ts
950
+ console.log(SixtyCycle.fromName('丁酉').getHeavenStem().getName()); // 丁
951
+ ```
952
+
953
+ ### `sixtyCycle.getEarthBranch()`
954
+
955
+ 返回对应地支实例。
956
+
957
+ #### 1. 参数说明
958
+
959
+ - 无参数。
960
+
961
+ #### 2. 返回说明
962
+
963
+ - `EarthBranch`
964
+
965
+ #### 3. 调用示例代码
966
+
967
+ ```ts
968
+ console.log(SixtyCycle.fromName('丁酉').getEarthBranch().getName()); // 酉
969
+ ```
970
+
971
+ ### `sixtyCycle.getKongWang()`
972
+
973
+ 返回该干支所属旬的空亡地支。
974
+
975
+ #### 1. 参数说明
976
+
977
+ - 无参数。
978
+
979
+ #### 2. 返回说明
980
+
981
+ - `[EarthBranch, EarthBranch]`
982
+ 两个空亡地支实例。
983
+
984
+ #### 3. 调用示例代码
985
+
986
+ ```ts
987
+ const kongWang = SixtyCycle.fromName('甲子').getKongWang();
988
+ console.log(kongWang.map((x) => x.getName()));
989
+ ```
990
+
991
+ ### `sixtyCycle.getSelfSeat()`
992
+
993
+ 返回该干支的自坐(以本柱干支计算十二长生)。
994
+
995
+ #### 1. 参数说明
996
+
997
+ - 无参数。
998
+
999
+ #### 2. 返回说明
1000
+
1001
+ - `string`
1002
+ 取值范围:长生、沐浴、冠带、临官、帝旺、衰、病、死、墓、绝、胎、养。
1003
+
1004
+ #### 3. 调用示例代码
1005
+
1006
+ ```ts
1007
+ console.log(SixtyCycle.fromName('甲子').getSelfSeat());
1008
+ ```
1009
+
1010
+ ## SolarTerm
1011
+
1012
+ ### `SolarTerm.getSupportedTimestampRange()`
1013
+
1014
+ 获取当前节气表支持的时间戳范围。
1015
+
1016
+ #### 1. 参数说明
1017
+
1018
+ - 无参数。
1019
+
1020
+ #### 2. 返回说明
1021
+
1022
+ - `{ minTimestamp: number; maxTimestamp: number }`
1023
+
1024
+ #### 3. 调用示例代码
1025
+
1026
+ ```ts
1027
+ import { SolarTerm } from 'cantian-bazi';
1028
+
1029
+ console.log(SolarTerm.getSupportedTimestampRange());
1030
+ ```
1031
+
1032
+ ### `SolarTerm.getSupportedYearRange()`
1033
+
1034
+ 获取当前节气表支持的年份范围。
1035
+
1036
+ #### 1. 参数说明
1037
+
1038
+ - 无参数。
1039
+
1040
+ #### 2. 返回说明
1041
+
1042
+ - `{ minYear: number; maxYear: number }`
1043
+
1044
+ #### 3. 调用示例代码
1045
+
1046
+ ```ts
1047
+ console.log(SolarTerm.getSupportedYearRange());
1048
+ ```
1049
+
1050
+ ### `new SolarTerm(solarTermYear, solarTermIndex, mode?)`
1051
+
1052
+ 按节气年和节气索引创建节气实例。
1053
+
1054
+ #### 1. 参数说明
1055
+
1056
+ - `solarTermYear: number`
1057
+ 节气年(按节气表索引年)。
1058
+ - `solarTermIndex: number`
1059
+ 节气索引,范围 `0~23`。
1060
+ - `mode?: 1 | 2`
1061
+ `1` 表示按节气步进,`2` 表示按“节”步进。
1062
+
1063
+ #### 2. 返回说明
1064
+
1065
+ - `SolarTerm`
1066
+ 越界会抛错。
1067
+
1068
+ #### 3. 调用示例代码
1069
+
1070
+ ```ts
1071
+ const lichun = new SolarTerm(2026, SolarTerm.NAME_TO_INDEX.立春, SolarTerm.MODE.JIE);
1072
+ console.log(lichun.timestamp);
1073
+ ```
1074
+
1075
+ ### `SolarTerm.fromTimestamp(timestamp, mode?)`
1076
+
1077
+ 按时间戳定位所在节气实例。
1078
+
1079
+ #### 1. 参数说明
1080
+
1081
+ - `timestamp: number`
1082
+ 用于定位的时间戳(毫秒)。
1083
+ - `mode?: 1 | 2`
1084
+ `1` 表示按节气定位,`2` 表示按“节”定位。
1085
+
1086
+ #### 2. 返回说明
1087
+
1088
+ - `SolarTerm`
1089
+ 超出支持时间范围会抛错。
1090
+
1091
+ #### 3. 调用示例代码
1092
+
1093
+ ```ts
1094
+ const solarTerm = SolarTerm.fromTimestamp(Date.now(), SolarTerm.MODE.JIE);
1095
+ console.log(solarTerm.getName());
1096
+ ```
1097
+
1098
+ ### `solarTerm.getName()`
1099
+
1100
+ 返回节气名称。
1101
+
1102
+ #### 1. 参数说明
1103
+
1104
+ - 无参数。
1105
+
1106
+ #### 2. 返回说明
1107
+
1108
+ - `string`
1109
+ 节气名称。
1110
+
1111
+ #### 3. 调用示例代码
1112
+
1113
+ ```ts
1114
+ console.log(SolarTerm.fromTimestamp(Date.now()).getName());
1115
+ ```
1116
+
1117
+ ### `solarTerm.next(offset?)`
1118
+
1119
+ 获取偏移后的节气实例(按当前 mode 步进)。
1120
+
1121
+ #### 1. 参数说明
1122
+
1123
+ - `offset?: number`
1124
+ 偏移步数,默认 `1`。
1125
+
1126
+ #### 2. 返回说明
1127
+
1128
+ - `SolarTerm`
1129
+ 越界会抛错。
1130
+
1131
+ #### 3. 调用示例代码
1132
+
1133
+ ```ts
1134
+ const current = SolarTerm.fromTimestamp(Date.now(), SolarTerm.MODE.JIE);
1135
+ console.log(current.next(1).getName());
1136
+ ```
1137
+
1138
+ ## Wuxing
1139
+
1140
+ ### `Wuxing.fromIndex(index)`
1141
+
1142
+ 按索引获取五行实例(循环取模)。
1143
+
1144
+ #### 1. 参数说明
1145
+
1146
+ - `index: number`
1147
+ 五行索引(会按 5 循环)。
1148
+
1149
+ #### 2. 返回说明
1150
+
1151
+ - `Wuxing`
1152
+
1153
+ #### 3. 调用示例代码
1154
+
1155
+ ```ts
1156
+ import { Wuxing } from 'cantian-bazi';
1157
+
1158
+ console.log(Wuxing.fromIndex(0).getName()); // 木
1159
+ ```
1160
+
1161
+ ### `Wuxing.fromName(name)`
1162
+
1163
+ 按名称获取五行实例。
1164
+
1165
+ #### 1. 参数说明
1166
+
1167
+ - `name: string`
1168
+ 五行名称(木火土金水)。
1169
+
1170
+ #### 2. 返回说明
1171
+
1172
+ - `Wuxing`
1173
+ 非法名称会抛错。
1174
+
1175
+ #### 3. 调用示例代码
1176
+
1177
+ ```ts
1178
+ console.log(Wuxing.fromName('金').index);
1179
+ ```
1180
+
1181
+ ### `wuxing.getName()`
1182
+
1183
+ 返回五行名称。
1184
+
1185
+ #### 1. 参数说明
1186
+
1187
+ - 无参数。
1188
+
1189
+ #### 2. 返回说明
1190
+
1191
+ - `string`
1192
+ 五行名称。
1193
+
1194
+ #### 3. 调用示例代码
1195
+
1196
+ ```ts
1197
+ console.log(Wuxing.fromIndex(3).getName()); // 金
1198
+ ```
1199
+
1200
+ ### `wuxing.getRelation(target)`
1201
+
1202
+ 返回与目标五行的关系值。
1203
+
1204
+ #### 1. 参数说明
1205
+
1206
+ - `target: Wuxing | string`
1207
+ 目标五行实例或五行名称。
1208
+
1209
+ #### 2. 返回说明
1210
+
1211
+ - `-2 | -1 | 0 | 1 | 2`
1212
+ `0` 同五行,`1` 生,`2` 克,`-1` 被生,`-2` 被克。
1213
+
1214
+ #### 3. 调用示例代码
1215
+
1216
+ ```ts
1217
+ console.log(Wuxing.fromName('木').getRelation('火')); // 1
1218
+ ```
1219
+
1220
+ ## Datetime
1221
+
1222
+ ### `Datetime.fromTimestamp(timestamp, timeOffset?)`
1223
+
1224
+ 将时间戳按指定偏移转换为 `Datetime`。
1225
+
1226
+ #### 1. 参数说明
1227
+
1228
+ - `timestamp: number`
1229
+ 要转换的绝对时间戳(毫秒)。
1230
+ - `timeOffset?: number`
1231
+ 时间偏移毫秒,默认 `0`(UTC)。
1232
+
1233
+ #### 2. 返回说明
1234
+
1235
+ - `Datetime`
1236
+
1237
+ #### 3. 调用示例代码
1238
+
1239
+ ```ts
1240
+ import { Datetime } from 'cantian-bazi';
1241
+
1242
+ const dt = Datetime.fromTimestamp(Date.now(), 8 * 3600000);
1243
+ ```
1244
+
1245
+ ### `datetime.compare(other)`
1246
+
1247
+ 比较两个 `Datetime` 的先后顺序。
1248
+
1249
+ #### 1. 参数说明
1250
+
1251
+ - `other: Datetime`
1252
+ 用于比较的另一个 `Datetime` 实例。
1253
+
1254
+ #### 2. 返回说明
1255
+
1256
+ - `number`
1257
+ 小于 0 表示当前对象更早,等于 0 表示相同,大于 0 表示更晚。
1258
+
1259
+ #### 3. 调用示例代码
1260
+
1261
+ ```ts
1262
+ const a = Datetime.fromTimestamp(Date.now());
1263
+ const b = a.add({ day: 1 });
1264
+ console.log(a.compare(b));
1265
+ ```
1266
+
1267
+ ### `datetime.add(delta)`
1268
+
1269
+ 对 `Datetime` 执行年月日时分秒毫秒加法并返回新值。
1270
+
1271
+ #### 1. 参数说明
1272
+
1273
+ - `delta: DatetimeDelta`
1274
+ 时间增量对象,支持字段:`year/month/day/hour/minute/second/ms`。
1275
+
1276
+ #### 2. 返回说明
1277
+
1278
+ - `Datetime`
1279
+ 返回加法后的新对象。
1280
+
1281
+ #### 3. 调用示例代码
1282
+
1283
+ ```ts
1284
+ const a = Datetime.fromTimestamp(Date.now());
1285
+ const b = a.add({ month: 1, day: 2, hour: 3 });
1286
+ console.log(b);
1287
+ ```
1288
+
1289
+ ## gods
1290
+
1291
+ `gods` 是神煞能力对象,包含 `definitions` 和 `match` 两个主要属性。
1292
+
1293
+ ### `gods.definitions`
1294
+
1295
+ 神煞定义集合。
1296
+
1297
+ ### `gods.match(options)`
1298
+
1299
+ 按全量柱计算各柱命中的神煞。
1300
+
1301
+ #### 1. 参数说明
1302
+
1303
+ - `options.pillars: string[]`
1304
+ 柱数组,按年/月/日/时顺序。
1305
+ - `options.gender: 0 | 1`
1306
+ `0` 女,`1` 男。
1307
+ - `options.definitionFilter?: (definition) => boolean`
1308
+ 神煞规则过滤函数,返回 `true` 表示参与匹配。
1309
+
1310
+ #### 2. 返回说明
1311
+
1312
+ - `string[][]`
1313
+ 各柱神煞数组(按柱分组)。
1314
+
1315
+ #### 3. 调用示例代码
1316
+
1317
+ ```ts
1318
+ import { gods } from 'cantian-bazi';
1319
+
1320
+ const result = gods.match({
1321
+ pillars: ['乙巳', '己丑', '戊申', '甲寅'],
1322
+ gender: 1,
1323
+ });
1324
+ console.log(result);
1325
+ ```
1326
+
1327
+ ## relations
1328
+
1329
+ `relations` 是关系能力对象,包含 `definitions`、`appendPillar` 和 `match`。
1330
+
1331
+ ### `relations.definitions`
1332
+
1333
+ 关系定义集合。
1334
+
1335
+ ### `relations.appendPillar(options)`
1336
+
1337
+ 在已有柱序列后追加一柱,返回该新增柱触发的新关系。
1338
+
1339
+ #### 1. 参数说明
1340
+
1341
+ - `options.prePillars: string[]`
1342
+ 追加前的柱数组。
1343
+ - `options.newPillar: string`
1344
+ 新增柱。
1345
+ - `options.definitionFilter?: (definition) => boolean`
1346
+ 关系规则过滤函数,返回 `true` 表示参与匹配。
1347
+
1348
+ #### 2. 返回说明
1349
+
1350
+ - `Relation[]`
1351
+ 新增柱触发的关系列表(`prePillarIndexes` 以 `prePillars` 为基准)。
1352
+
1353
+ #### 3. 调用示例代码
1354
+
1355
+ ```ts
1356
+ import { relations } from 'cantian-bazi';
1357
+
1358
+ const appended = relations.appendPillar({
1359
+ prePillars: ['乙巳', '己丑', '戊申'],
1360
+ newPillar: '甲寅',
1361
+ });
1362
+ console.log(appended);
1363
+ ```
1364
+
1365
+ ### `relations.match(options)`
1366
+
1367
+ 根据全量柱返回全量关系。
1368
+
1369
+ #### 1. 参数说明
1370
+
1371
+ - `options.pillars: string[]`
1372
+ 全量柱数组。
1373
+ - `options.definitionFilter?: (definition) => boolean`
1374
+ 关系规则过滤函数,返回 `true` 表示参与匹配。
1375
+
1376
+ #### 2. 返回说明
1377
+
1378
+ - `(Relation & { pillarIndex: number })[]`
1379
+ 全量关系列表,`pillarIndex` 表示触发关系的新柱索引。
1380
+
1381
+ #### 3. 调用示例代码
1382
+
1383
+ ```ts
1384
+ import { relations } from 'cantian-bazi';
1385
+
1386
+ const all = relations.match({
1387
+ pillars: ['乙巳', '己丑', '戊申', '甲寅'],
1388
+ });
1389
+ console.log(all);
1390
+ ```