Board logo

Subject: CnCalendar的BUG? [Print This Page]

Author: 飘云!    Time: 2011-7-10 08:09     Subject: CnCalendar的BUG?

例如:
1989年3月5日3时54分
正确四柱应该为:
己巳 丙寅 甲子 丙寅
而控件计算的为:
己巳 丁卯 甲子 丙寅

望大哥回复
Author: Passion    Time: 2011-7-10 22:08

我们代码中有针对这方面的处理,看来是有bug,我查一下。
Author: Passion    Time: 2011-7-10 22:31

原因是这样的,我们根据节气来区分年月的时候只精确到天,没将当前的小时考虑进来,因此节气当天就直接算入了本月而不是上个月。我们也没找到精确的文档规定月份根据节气的划分是否需要精确到小时分钟,因此就没这样做了。
Author: 飘云!    Time: 2011-7-11 07:56

谢谢大哥回复,参考
http://blog.sina.com.cn/s/blog_599f17d80100c8pq.html
年上起月可知:
立春到惊蛰为寅月,从惊蛰到清明为卯月等。

上例中
1989年3月5日3时54分

前后交节时间为:
雨水※1989-02-19 00:25  惊蛰※1989-03-05 22:35

所以3时是立春至惊蛰之间~ 应该取寅月~
到了22点36  或者说23点的时候,应该取卯月~
是否该如此? 参考其他书籍也是这样来划分的
Author: Passion    Time: 2011-7-18 11:00

原来如此。我们可以改改让其更精确。
不过我们移植的节气交接时刻的计算也是有误差的,按作者说精确度在十几分钟,这些误差也会有一定概率影响到月柱乃至年柱的计算。
Author: Passion    Time: 2011-7-18 15:17

已经修复了一版。楼主如可访问我们的SVN,可从上取下最新版来使用。

http://cnpack.org/showdetail.php?id=639&lang=zh-cn
Author: 飘云!    Time: 2011-7-26 23:34

谢谢大哥的更新~~

1989年3月5日3时54分
得到正确四柱:
己巳 丙寅 甲子 丙寅

但是
1989年3月5日23时30分
四柱应该为:
己巳 丁卯 乙丑 丙子
而控件显示为:
己巳 丙寅 乙丑 丙子

还是月柱问题~~
Author: Passion    Time: 2011-7-27 20:48

你的代码是怎么写的?
我们程序打印1989年3月5日23时的结果如下:

公历日数:726168
等效标准日数:726166
星期:0
9九第3天
星座:双鱼
年:己巳
月:丁卯
日:乙丑
时:丙子
二十八宿:虚/虚日鼠
本日纳音五行:金/海中金
十二建:收
本日节气:惊蛰
本日交节时刻:22 时 35 分

过了这个交节时刻就应该是丁卯,我们Examples里头的程序也是这样显示的。

可以检查一下是否是使用的这个函数获取月柱:
function GetGanZhiFromMonth(AYear, AMonth, ADay, AHour: Integer): Integer;
Author: 飘云!    Time: 2011-7-28 08:18



QUOTE:
原帖由 Passion 于 2011-7-27 20:48 发表
你的代码是怎么写的?
我们程序打印1989年3月5日23时的结果如下:

公历日数:726168
等效标准日数:726166
星期:0
9九第3天
星座:双鱼
年:己巳
月:丁卯
日:乙丑
时:丙子
二十八宿:虚/虚日鼠
本日纳音五行:金/海中金
十二建:收
本日节 ...

感谢~~ 函数用错了。。已解决

GetLunarFromDay 是否考虑要加入时间参数好些? 23时过后是次日子时了,要 inc(LunarDay)




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0