以文本方式查看主题 - 中华农历论坛 (http://bbs.nongli.net/index.asp) -- 历法知识 (http://bbs.nongli.net/list.asp?boardid=2) ---- 雪缘电子万年历高级完整版 V3.00(8500年) (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=16555) |
-- 作者:NetGhost -- 发布时间:2009/1/5 13:02:00 -- 雪缘电子万年历高级完整版 V3.00(8500年) 雪缘电子万年历高级完整版 V3.00 更新更多黄历信息、命理等信息!由于软件常有更新使用期限至2009-2-28 请随时升级 下载地址:雪缘电子万年历高级完整版 访问地址:雪缘电子万年历高级完整版
|
-- 作者:lxm0521 -- 发布时间:2009/1/5 18:54:00 -- 你的软件速度太慢了,你还不公布源码,没有开源精神,向许老师学习吧,在大家的关心讨论中改进学习和进步 |
-- 作者:浪-淘-沙 -- 发布时间:2009/1/5 23:19:00 -- 速度是慢.估计是所谓的查表法.即把8500年里的数据都计算好了,放在一个数据库里,供查找日历时用.这样就相对慢一些了. 另外就是软件的精度问题.不知道楼主的软件与实际的数据相差多少? 较精确的数据参考紫金山天文台发布的二十四节气时刻,朔望时刻. |
-- 作者:chwc -- 发布时间:2009/1/6 10:57:00 -- 接了你的电话后,我就下载来看看,发现你没把大小月有错的地方改过来。例如:2032年11(冬)月只有29天,是小,但是你的显示大。你在电话说你的大小月算法是看每月最后一天如是30就大,29就小。可是我昨晚EXE版看后就去把你的源码下载来看,不是啊。你的大小月算法是用我的《电脑医生万年历》测试版的代码。(注:《知来者》内核没有算大小月的代码,我加上的),你把它理解错了。我的本意是:“每月初一加29,如果是30就大,如果是1就是小。”但我发现这样这种土办法算出来的结果出错多,在调用时做了修正。我当时的修正也是会有出错的。而你现在还是用我早期的方法;所以有错。我在2008年10月就改了。计算代码如下(2008年10月计算法没改): function lundsMon(y,m,d){ var lunDt=lunDate(y,m,d);///调用農暦日函數 var lunD=floor(lunDt-floor(lunDt/100)*100); //農暦日數 var rja=lunD-1;////算离这月的初一有多少天 var a96=floor((lunDate(y,m,d-rja+29))-floor((lunDate(y,m,d-rja+29))/100)*100);///算初一加29后日數是多少。 var dszm=\'\'; /////農曆月大或小。 if(a96==30){dszm=\'大\' }else{dszm=\'小\' } return dszm; } 调用修正代码如下(调用在2008年10月这里有改后):////////計算農曆月大小。 var dasao=\'\'; var lunMa28=lunMon(y1+1,1,1); var lunMa29=lunMon(y1,m1+1,1); if(m1==12&&d1>=2&&d1>lunD1){if(lunMa28==lunM1){dasao=lundsMon(y1+1,1,1)}else{dasao=lundsMon(y1,m1,d1)}}else{if(d1>=2&&d1>lunD1){if(lunMa29==lunM1){dasao=lundsMon(y1,m1+1,1)}else{dasao=lundsMon(y1,m1,d1)}}else{dasao=lundsMon(y1,m1,d1)}} 这样错就修正过来了,但是运算多了如是早期的电脑就慢了。我在《电脑医生万年历》1.87版时就把它扔了;现在我的代码如下: function lundsMon(y,m,d){ var a96=lunDate(y,m,d,1);////月共有多少天。 var dszm=\'\'; /////農曆月大或小。 if(a96==30){dszm=\'大\' }else{dszm=\'小\' } return dszm; } 调用:dasao=lundsMon(y1,m1,d1);////////計算農曆月大小。 不但简单了,而且不会出错。 [此贴子已经被作者于2009-1-6 12:25:00编辑过] |
-- 作者:chwc -- 发布时间:2009/1/6 11:09:00 -- 另外月的干支和72候也有错。《知来者》原作者的代码(注:72候也是我加上的,早期的有错)和我的《电脑医生万年历》测试版的代码算出来的出错多。我在:[分享]献给那些和我采用同样核心代码的人们做参考。中已有公开月的干支算法代码,这里不重发。你有兴趣可去看看。 |
-- 作者:NetGhost -- 发布时间:2009/1/6 13:25:00 -- 增加了命理推测!优化了部分代码,待命理部分代码完成即可后公开源码,由于最近时间比较繁忙有些错误还未即时更新!望大家谅解!本历主要用于择吉和批命。由于常有更新待源码未公开前都有使用期限。 |
-- 作者:lxm0521 -- 发布时间:2009/1/6 14:07:00 -- 以下是引用NetGhost在2009-1-6 13:25:00的发言: 增加了命理推测!优化了部分代码,待命理部分代码完成即可后公开源码,由于最近时间比较繁忙有些错误还未即时更新!望大家谅解!本历主要用于择吉和批命。由于常有更新待源码未公开前都有使用期限。 好的,大家期待,预祝你的代码越来越完善 |
-- 作者:chwc -- 发布时间:2009/1/6 17:40:00 -- 很高兴NetGhost你用上我改后的代码,你打话叫我上传源码给你核对,因上传麻烦,再加上有的还在测试中,现在我只对你有用部份并已测试过的来给你。大小月出错可用两个方法修正。方法一:把“var dasao=; 换为“ var dasao=; var lunMa28=lunMon(y1+1,1,1); var lunMa29=lunMon(y1,m1+1,1); 二:比较准确和实用的;必须改动function lunDate(y,m,d,a){ },主要是改动{ }里边的部份代码;我在《公开《电脑医生万年历》源码,献给采用同样核心代码的人们做参考》已公开过了,在这不重发了。你要就去看看。你要的72候新算法那也有。http://bbs.nongli.com/dispbbs.asp?boardid=2&id=16589&star=1#16589 |