Closed Qing8 closed 6 months ago
感谢你付出时间做出这个代码仓库并且保持清楚的文档! :)
根据文档 - 换日 lunisolar会在23:00进行换日,可是以下代码返回的两个日期有相反的结果,不知道是否是我的使用方式有问题?
// Time: 2024/3/6 22:00 const ten = "2024/3/6 22:00" const tenChar8 = lunisolar(ten).char8; console.log(`${ten}: ${tenChar8.year.stem.toString()}, ${tenChar8.year.branch.toString()} \ ${tenChar8.month.stem.toString()}, ${tenChar8.month.branch.toString()} \ ${tenChar8.day.stem.toString()}, ${tenChar8.day.branch.toString()} `); // Time: 2024/3/6 23:00 const eleven = "2024/3/6 23:00" const elevenChar8 = lunisolar(eleven).char8; console.log(`${eleven}: ${elevenChar8.year.stem.toString()}, ${elevenChar8.year.branch.toString()} \ ${elevenChar8.month.stem.toString()}, ${elevenChar8.month.branch.toString()} \ ${elevenChar8.day.stem.toString()}, ${elevenChar8.day.branch.toString()} `);
输出:
2024/3/6 22:00: 甲, 辰 丁, 卯 庚, 午 <- 潜在的错误输出 2024/3/6 23:00: 甲, 辰 丁, 卯 庚, 午
预期输出:
2024/3/6 22:00: 甲, 辰 丁, 卯 己, 巳 2024/3/6 23:00: 甲, 辰 丁, 卯 庚, 午
谢谢!
您好,我直接复制你的代码测试,和预期的输出一致。你再检查一下你的业务代码有没有问题?另外如果使用较低版本的lunisolar,建议升级一下。 谢谢。
@waterbeside 谢谢你的及时回复!
2.4.0
。我以为和我所在的时区(EST)相关,所以把时间转换为UTC时间后再次尝试,但是两个时间的结果还是相同的。
const ten = "2024/3/7 03:00" // UTC time for "2024/3/6 22:00"
const tenChar8 = lunisolar(ten, { isUTC:true }).char8;
console.log(`
${ten}: ${tenChar8.year.stem.toString()}, ${tenChar8.year.branch.toString()} \
${tenChar8.month.stem.toString()}, ${tenChar8.month.branch.toString()} \
${tenChar8.day.stem.toString()}, ${tenChar8.day.branch.toString()} \
`);
const eleven = "2024/3/7 04:00" // UTC time for "2024/3/6 23:00"
const elevenChar8 = lunisolar(eleven, { isUTC:true }).char8;
console.log(`
${eleven}: ${elevenChar8.year.stem.toString()}, ${elevenChar8.year.branch.toString()} \
${elevenChar8.month.stem.toString()}, ${elevenChar8.month.branch.toString()} \
${elevenChar8.day.stem.toString()}, ${elevenChar8.day.branch.toString()} \
`);
这个就是我目前保留下来的全部代码了,使用的是react + javascript.
请问你还可以想到任何其他原因会造成这两个相同输出吗?非常感谢!
我可能找到了原因。lunisolar应该是把我的当地时间(EST)换算成北京时间进行计算的,我测试了几个时间,
当地EST时间字符串 | 相当于北京时间 | 根据北京时间计算的天干地支 | 我希望的天干地支 |
---|---|---|---|
2024/3/6 09:00 | 2024/3/6 22:00 | 丁卯月 己巳日 | 丁卯月 己巳日 |
2024/3/6 10:00 | 2024/3/6 23:00 | 丁卯月 庚午日 | 丁卯月 己巳日 |
2024/3/6 22:00 | 2024/3/7 11:00 | 丁卯月 庚午日 | 丁卯月 己巳日 |
2024/3/6 23:00 | 2024/3/7 12:00 | 丁卯月 庚午日 | 丁卯月 庚午日 |
下图里面的输出和 根据北京时间计算的天干地支 是一致的,由此可以说明lunisolar的代码应该是正确的。
请问如果我想根据EST时间来计算天干地支(得到 我希望的天干地支 的结果),应该如何配置呢?
我可能找到了原因。lunisolar应该是把我的当地时间(EST)换算成北京时间进行计算的,我测试了几个时间,
代码 当地EST时间字符串 相当于北京时间 根据北京时间计算的天干地支 我希望的天干地支 2024/3/6 09:00 2024/3/6 22:00 丁卯月 己巳日 丁卯月 己巳日 2024/3/6 10:00 2024/3/6 23:00 丁卯月 庚午日 丁卯月 己巳日 2024/3/6 22:00 2024/3/7 11:00 丁卯月 庚午日 丁卯月 己巳日 2024/3/6 23:00 2024/3/7 12:00 丁卯月 庚午日 丁卯月 庚午日 下图里面的输出和 根据北京时间计算的天干地支 是一致的,由此可以说明lunisolar的代码应该是正确的。
请问如果我想根据EST时间来计算天干地支(得到 我希望的天干地支 的结果),应该如何配置呢?
你好,感谢你提出的问题,干支改成地方时换日的确更符合使用习惯,我已进行修改,请试试 v2.5.0 版本,谢谢。 (ps: 另外,读取当前日期多个干支的话,使用format方法可以更简化)
感谢你付出时间做出这个代码仓库并且保持清楚的文档! :)
根据文档 - 换日 lunisolar会在23:00进行换日,可是以下代码返回的两个日期有相反的结果,不知道是否是我的使用方式有问题?
输出:
预期输出:
谢谢!