中华农历论坛知识讨论区历法知识 → 雪缘电子万年历高级完整版 V3.00(8500年)


  共有16277人关注过本帖树形打印

主题:雪缘电子万年历高级完整版 V3.00(8500年)

帅哥哟,离线,有人找我吗?
NetGhost
  1楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:37 积分:1261 威望:0 精华:0 注册:2008/12/7 15:26:00
雪缘电子万年历高级完整版 V3.00(8500年)  发帖心情 Post By:2009/1/5 13:02:00

雪缘电子万年历高级完整版 V3.00 更新更多黄历信息、命理等信息!由于软件常有更新使用期限至2009-2-28 请随时升级

下载地址:雪缘电子万年历高级完整版

访问地址:雪缘电子万年历高级完整版

 


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
lxm0521
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:50 积分:1279 威望:0 精华:0 注册:2008/11/4 18:17:00
  发帖心情 Post By:2009/1/5 18:54:00

你的软件速度太慢了,你还不公布源码,没有开源精神,向许老师学习吧,在大家的关心讨论中改进学习和进步

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
浪-淘-沙
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:2068 积分:4263 威望:5 精华:4 注册:2008/11/13 21:03:00
  发帖心情 Post By:2009/1/5 23:19:00

速度是慢.估计是所谓的查表法.即把8500年里的数据都计算好了,放在一个数据库里,供查找日历时用.这样就相对慢一些了.

另外就是软件的精度问题.不知道楼主的软件与实际的数据相差多少?

较精确的数据参考紫金山天文台发布的二十四节气时刻,朔望时刻.


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  4楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By: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编辑过]


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  5楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By:2009/1/6 11:09:00

另外月的干支和72候也有错。《知来者》原作者的代码(注:72候也是我加上的,早期的有错)和我的《电脑医生万年历》测试版的代码算出来的出错多。我在:[分享]献给那些和我采用同样核心代码的人们做参考。中已有公开月的干支算法代码,这里不重发。你有兴趣可去看看。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
NetGhost
  6楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:37 积分:1261 威望:0 精华:0 注册:2008/12/7 15:26:00
  发帖心情 Post By:2009/1/6 13:25:00

增加了命理推测!优化了部分代码,待命理部分代码完成即可后公开源码,由于最近时间比较繁忙有些错误还未即时更新!望大家谅解!本历主要用于择吉和批命。由于常有更新待源码未公开前都有使用期限。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
lxm0521
  7楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游民 帖子:50 积分:1279 威望:0 精华:0 注册:2008/11/4 18:17:00
  发帖心情 Post By:2009/1/6 14:07:00

以下是引用NetGhost在2009-1-6 13:25:00的发言:
增加了命理推测!优化了部分代码,待命理部分代码完成即可后公开源码,由于最近时间比较繁忙有些错误还未即时更新!望大家谅解!本历主要用于择吉和批命。由于常有更新待源码未公开前都有使用期限。

好的,大家期待,预祝你的代码越来越完善


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
chwc
  8楼 个性首页 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:黑侠 帖子:603 积分:5315 威望:0 精华:4 注册:2008/4/21 19:06:00
  发帖心情 Post By:2009/1/6 17:40:00

很高兴NetGhost你用上我改后的代码,你打话叫我上传源码给你核对,因上传麻烦,再加上有的还在测试中,现在我只对你有用部份并已测试过的来给你。大小月出错可用两个方法修正。方法一:把“var dasao=;
if(m1==12&&d1>2&&d1>lunD1){dasao=lundsMon(y1+1,1,1)}else{if(d1>2&&d1>lunD1){dasao=lundsMon(y1,m1+1,1)}else{dasao=lundsMon(y1,m1,d1)}}  ”

换为“  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)}}”

二:比较准确和实用的;必须改动function lunDate(y,m,d,a){

},主要是改动{ }里边的部份代码;我在《公开《电脑医生万年历》源码,献给采用同样核心代码的人们做参考》已公开过了,在这不重发了。你要就去看看。你要的72候新算法那也有。http://bbs.nongli.com/dispbbs.asp?boardid=2&id=16589&star=1#16589


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

雪缘电子万年历高级完整版 V3.00(8500年)








签名