CnPack Forum


 
Subject: CnCalendar的BUG?
飘云!
新警察
Rank: 1



UID 67088
Digest Posts 0
Credits 23
Posts 8
点点分 23
Reading Access 10
Registered 2011-7-10
Status Offline
Post at 2011-7-10 08:09  Profile | Blog | P.M. 
CnCalendar的BUG?

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

望大哥回复
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2011-7-10 22:08  Profile | Blog | P.M. 
我们代码中有针对这方面的处理,看来是有bug,我查一下。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2011-7-10 22:31  Profile | Blog | P.M. 
原因是这样的,我们根据节气来区分年月的时候只精确到天,没将当前的小时考虑进来,因此节气当天就直接算入了本月而不是上个月。我们也没找到精确的文档规定月份根据节气的划分是否需要精确到小时分钟,因此就没这样做了。
Top
飘云!
新警察
Rank: 1



UID 67088
Digest Posts 0
Credits 23
Posts 8
点点分 23
Reading Access 10
Registered 2011-7-10
Status Offline
Post at 2011-7-11 07:56  Profile | Blog | P.M. 
谢谢大哥回复,参考
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点的时候,应该取卯月~
是否该如此? 参考其他书籍也是这样来划分的
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2011-7-18 11:00  Profile | Blog | P.M. 
原来如此。我们可以改改让其更精确。
不过我们移植的节气交接时刻的计算也是有误差的,按作者说精确度在十几分钟,这些误差也会有一定概率影响到月柱乃至年柱的计算。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2011-7-18 15:17  Profile | Blog | P.M. 
已经修复了一版。楼主如可访问我们的SVN,可从上取下最新版来使用。

http://cnpack.org/showdetail.php?id=639&lang=zh-cn
Top
飘云!
新警察
Rank: 1



UID 67088
Digest Posts 0
Credits 23
Posts 8
点点分 23
Reading Access 10
Registered 2011-7-10
Status Offline
Post at 2011-7-26 23:34  Profile | Blog | P.M. 
谢谢大哥的更新~~

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

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

还是月柱问题~~
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2011-7-27 20:48  Profile | Blog | P.M. 
你的代码是怎么写的?
我们程序打印1989年3月5日23时的结果如下:

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

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

可以检查一下是否是使用的这个函数获取月柱:
function GetGanZhiFromMonth(AYear, AMonth, ADay, AHour: Integer): Integer;
Top
飘云!
新警察
Rank: 1



UID 67088
Digest Posts 0
Credits 23
Posts 8
点点分 23
Reading Access 10
Registered 2011-7-10
Status Offline
Post at 2011-7-28 08:18  Profile | Blog | P.M. 


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

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

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

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




All times are GMT++8, the time now is 2024-11-25 02:54

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.008831 second(s), 7 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP