6tail你好:
关于lunar-javascript里的二十八星宿排列,使用的是地支+周的计算方式。
而其他部分农历程序使用的是印度佛教的27星宿排布方式。(印度佛教所使用二十七星宿,传自中土。但因为观测位置原因,舍弃了牛宿。)
理由1:印度佛教排列的27星宿方法是对的,但是不适用北京时间。因为我国北京地区观测月宫黄道,是可以观测到牛宿的。
理由2:地支+周之所以不对,是因为周在古代计时中,采用的是七曜排序,与现代的“基督教礼拜日”相差甚远,使用+周的做法不提倡,也没有逻辑依据。
根据我使用观星方式所获得的二十八值日,采用农历月表的排列方式,恢复成二十八星宿相对来说更加准确。
二十八星宿资料采用:https://zh.wikipedia.org/wiki/%E4%BA%8C%E5%8D%81%E5%85%AB%E5%AE%BF%E4%B8%AD%E8%A5%BF%E6%98%9F%E5%90%8D%E5%AF%B9%E7%85%A7%E8%A1%A8
根据对应现代星座名称,我观测了在不同阴历月日时,月亮所重叠的二十八星宿位置。
以此推荐您做以下修改:例如:
月排序
export const CN_MONTH = '十一_十二_正_二_三_四_五_六_七_八_九_十'.split('_')
二十八星宿排序:
export const XINGXIU28 = '角_亢_氐_房_心_尾_箕_斗_牛_女_虚_危_室_壁_奎_娄_胃_昴_毕_觜_参_井_鬼_柳_星_张_翼_轸'.split('')
export const XX28_WX = '木_金_土_日_月_火_水_木_金_土_日_月_火_水_木_金_土_日_月_火_水_木_金_土_日_月_火_水'.split('')
export const XX28_MING = '蛟_龙_貉_兔_狐_虎_豹_獬_牛_蝠_鼠_燕_猪_貐_狼_狗_雉_鸡_乌_猴_猿_犴_羊_獐_马_鹿_蛇_蚓'.split('_')
二十八星宿对应月数组的起始排序:
var sort = '8_11_13_15_17_19_21_23_26_1_3_5'.split('_')
var R = {}
for (var i = 0; i < 12; i++) {
var f = sort[i] - 1
R[CN_MONTH[i]] = []
for (let j = 0; j < 30; j++) {
R[CN_MONTH[i]].push([XINGXIU28[(f + j) % 28], XX28_WX[(f + j) % 28], XX28_MING[(f + j) % 28]])
}
}
return R
由此可获得对于北京时间相对准确的二十八星宿值日列表,也符合现代观星所获得的二十八星宿值日结果。
请您参考,此致,敬礼。