寿星万年历2008版更新说明
寿星万年历2008版更新说明,是根据论坛的本贴(“寿星万年历2.0(测试版)”(http://bbs.nongli.com/dispbbs.asp?boardID=2&ID=14995&page=1))
和“日月计算器(包含'公农回'三合一万年历)”(http://bbs.nongli.com/dispbbs.asp?boardID=2&ID=12282&page=2)
两贴中作者许老师所发布的内容整理而成的。
1、发布日期优先按网站下载的压缩包日期确定,再按作者在网站的发贴日期确定。
2、从更新说明可以看出作者在寿星万年历上所花了大量的时间和精力,特别是最近一个月,几乎每天更新一个版本,甚至是每天两个版本的更新。
在此,对许老师的辛勤劳动表示感谢。
========================================================
2008-12-20 发布V3.23版
1、根据浪淘沙的指正,修正3.21版的一个八字失误
========================================================
2008-12-19 发布V3.22版
1、改进坐标变换相差算法——使用了严格的周日视差修正算法。
2、改进sun_moon()类,在赤道坐标进行视差修正。
3、增加了日食甚的参考计算。注意:只是算出了日月中心角距离的最小值发生的时刻,有无日食还须人工核对一下半径和。
食甚时刻使用了迭代算法,精度较高。
4、增加了海拨高度及任意地标输入。
========================================================
2008-12-17 发布V3.21版
1、修好了版面结构
2、微调yueLiHTML()成员函数
3、加入图表功能,目前可能精确观测日食(可精确到秒)
========================================================
2008-12-16 发布V3.20版
1、改正EXE版“地标选择”不能写入cookies的问题
2、优化即时日月星历计算,把它做成独立的类件,以便下一步计算日月食。
========================================================
2008-12-15 发布V1.9版
1、优化“命理八字”的计算,使之成为一个与农历类无关的独立函数
2、更改页面上地标的显示方式
========================================================
2008-12-15 发布V3.18版
1、改正左上方两个时间有时候会相差1秒的问题(dexian报告)。
出错原因:上面一个时间使用javascript自带的本地时间函数输出,下一个使用自定义的JD物件输出,前都设有四舍五入到秒,后者有,所以有时差一秒。修改后统一作了四舍五入。这样有可能与电脑托盘上时间相差1秒,但可保证寿星万年历中使用的时间的统一。
2、根据叶风杨的建议改“三一”为“卅一”
3、答ymy111问题:您所述的纪日法在鼠标经过日历上方时弹出的浮动框里显示。命理八字好像全部严格使用天象确定八字,如以立春时刻定年,节气时刻定月,真太阳23点定日,真太阳23点、1点、3点……定时辰,我觉得,如果使用平太阳时间系统定日,那么八定计算显得不统一、不协调,造成年月使用“真时间”,日时使用“平时间”。纪日纪时的改正当时根据netghost的建议改正的。说实在,我也不清楚这种方法是否正确。
========================================================
2008-12-14 发布V3.17版
1、修正“命理八字”中纪日分界点的错误。改为23点
2、更改“命理八字”的历算内核,全部采用天象确定命理八字,输入为UTC,内核转为真太阳时间系统计算。
3、更改“命理八定”的接口参数,有利用在此基础上扩充功能
这个版本修正得很累,因为重新设计了一个高速中精度的时差算法。
我检查了一下,EXE版确实存在地标选择参数无法写入cookies的问题,EXE程序是用html_runexe.exe编译的,我也不知道问题出在哪里。望有高手指教。
日食的图表显示问题正在设计中,目前使用VML图形技术解决。本来想用日梭万年历的方案,但我还是放弃了。我把经纬度表达为直角平面,并再用一个图进行日月运动的局部放大(放大数十倍)。不然太阳太小,看不出日食效果。日食代码的设计还要一段时间才能完成。
VML的接口已经设计好,但觉得复杂。我有可能回至使用GIF的方案。
========================================================
2008-12-13 发布V3.16版
1、根据浪淘沙的指正,修改了下方的坐标计算错误。
2、修改了地标数准没有正确写入cookies的错误(造成下次打开时无法保留原来的地标数据)
========================================================
2008-12-12 发布V3.15版
1、改正了晚上23点至24的纪时错误。
========================================================
2008-12-12 发布V3.14版
1、根据叶风杨的建议(在他的html版),把鼠标经过的显示框位置作了调整。防止显示框超出日历区。
2、修正时区信息的“中南”、“大洋”的错误,改正为“中南美洲”“大洋洲”
3、再次改写内核结构(不改算法)
内核基本组成为:
(1)XL 物件:星历物件
(2)obb物件:农历通用的常数表、天文算法计算气朔函数等、公历农历的节日判断函数等
(3)SSQ物件:农历的气朔计算表计算器(含古历算法及天文算法)、年历排定(定出月序、闰月、月大小、月建)等
(4)Lunar类:这是一个类,不是物件实例。功能:产生月历详细表。
调用方法示例1:
var lun = new Lunar(); //生成月历物件
lun.yueLiCalc(); //生成月历
调用后,lun物件将产生很多农历信息
调用方法示例2:
var lun = new Lunar();
lun.yueLiHTML(); //生成月历HTML
yueLiHTML成员函数与页面生成有关。如果对版面不满意,改这个函数的内容。
说明:
1、程序结构基本上比较合理、标准,有空的时候写一个编程技术档案,这样就可在《寿星万年历》的基础上进行二次开发了。
2、注意程序中的public申明与private申明,javascript不易做到公有或私有申明,所以的物件或类,其成员都是公有的。如果我在注释中申明为私有,用户不要调用(它是成员函数内部自己调用的,与用户关系不大)。很多函数是私有函数,抛开么有成员函数再去理解程序结构,就会发现程序没几行。
========================================================
2008-12-11 发布V3.13版
1、根据“叶风杨”兄的农历节日数据,增加了一些农历节日
写“万年历”的工作量很大,有点超出我当时的想象。刚开始写的时候,本以为只需一两个星期就可以解决问题,想不到搞了几个月还未能发布完整版。
========================================================
2008-12-11 发布V3.12版
相对V3.10版,改正了:
1、619年到1960年的V3.10农历气朔函数调用的失误。这个调用错误造成这1千多年的农历无法计算。
2、改写了压缩合成单文件sxwnl.htm用的“JavaScript代码压缩器”,V3.10使用ESC软件压缩合成,但我没有找到这个软件的调试功能,以至于压缩出错时我无法找出原因,所以花了一天时间自己编写了一个压缩器,文件名为jsZip.js,它带有调试功能,通过调试,可确保压缩成功。
3、内核作了微调
说明,jsZip.js内部使用了WScript对象以及文件对象,所以计算机的安全级别不能过高。请使用Cscript.exe执行jsZip.js,不能使用Wscript.exe
========================================================
2008-12-09 发布V3.10版
相对V3.09,本版作了一些内核结构改动。变化如下:
1、修改了一部分程序结构,增强程序的可读性、更意管理。程序代码很长,原来结构有很多不合理。这样有助于下一步扩展程序功能而不造成性能的下降。
2、根据netghost提供的数据,增加了严格的世界各国时区
3、增加了js压缩、合并的工具包
4、订正JD物件的一个bug,并增加了JD物件的一个函数
5、根据ldlcau的数据,修改了-1600年的年号
6、微调一点版面结构
========================================================
2008-12-07 发布V3.09版
作者没有发布更新说明。
========================================================
2008-12-06 发布V3.08版
作者没有发布更新说明。
========================================================
2008-12-05 发布V3.06版
作者没有发布更新说明。
========================================================
2008-12-04 发布V3.05版
1、改正了年份跳转的错误。被充了一些说明档案(备忘技术档案)
========================================================
2008-12-02 发布V3.03版
更新内容:
1、根据ldlcau在第29楼的建议,更改了公元前纪年的显示和输入问题
2、根据ldlcau在第29楼的建议,更新了年号纪年数据库
3、增加了说明文档第六章(“离散序列的线性拟合”),这是提取古历参数的利器。
========================================================
2008-12-02 发表了V3.02
1、改进了古历算参数。
原历算参数取小数点以下8位,容差h也偏小,理论上存在1280至1645年气日误算的可能(当然这种可能性十分小)。
改进后取小数点以后9位,同时增加容差h一倍。
========================================================
2008-12-01 发布V3.0
新增内容:
1、前历推算到-721年,与实历相符。
2、修改部分说明书的容。
========================================================
2008-11-27 发布V2.05版
更改如下:
1、根据ldlcau先生在18楼提供的数据,更新了年号数据库
========================================================
2008-11-26 发布V2.04版
更改如下:
1、根据ldlcau先生在15楼提供的数据,更新了年号数据库。
2、提供年号数据管理工具。
3、更新了帮助文档。
========================================================
2008-11-26 发布V2.03版
1、根据浪-淘-沙的指正,已更改了“纪月”的错误。
错误原因:在两个冬至之前,必含有十三个月的“纪月”信息,更改历算内核时误以为只有12个月。
程序更改如下:
原来的:
//纪月处理,1998年12月7(大雪)开始连续进行节气计数,0为甲子
mk = int2( (ob.d0 - this.ZQ[0])/30.43685 ); if(mk<11 && ob.d0>=this.ZQ[2*mk+1]) mk++; //相对大雪的月数计算
改为:
//纪月处理,1998年12月7(大雪)开始连续进行节气计数,0为甲子
mk = int2( (ob.d0 - this.ZQ[0])/30.43685 ); if(mk<12 && ob.d0>=this.ZQ[2*mk+1]) mk++; //相对大雪的月数计算
========================================================
2008-11-25 发布V2.02版
1、根据Violentpig 的指正,更改了“某月第几个星期几”的节日计算错误。
当时我把“某月第几个星期几”理解为“某月第几星期的星期几”而造成错误。
========================================================
2008-11-24 发布V2.01版
更改了公元9年到23年的月建
========================================================
2008-11-21 发布V2.0版
1、已将古代真实日历推算到公元前104年(与实历相符),公元前104年以前及1960年以后的农历使用现代算法
2、提供精准的农历年历表
3、提供现代定气、定朔与古代气朔的比较
4、改写了历算内核
说明:为了准确得到古历原貌,做了不少工作,虽然程序的最后程序长度几乎不变,但软件开发其间编写了很多历算数据提取、整理、较验的中间代码,以及许多算法分析,真的觉得累了,所以我不打算再往前推算公元前104前以前的古代原真日历了,望大家愿谅。
========================================================
2008-11-7 发布V1.35版
作者没有发布更新说明。
========================================================
2008-11-4 发布V1.33版
1、修正了一个显示错误。
========================================================
2008-10-17 发布V1.32版
作者没有发布更新说明。
========================================================
2008-09-07 发布V1.31版
作者没有发布更新说明。
========================================================
2008-09-05 发布V1.3版
作者没有发布更新说明。
========================================================
2008-09-01 发布V1.2版
作者没有发布更新说明。
========================================================
2008-08-29 发布V1.1版
正式发布寿星万年历脱机版本及源代码。
作者没有发布更新说明。
========================================================
2008-07-27 发布日月计算器(包含'公农回'三合一万年历,即寿星万年历)在线版。
http://www.fjptsz.com/xxjs/xjw/rj/115.htm
暑假花费了2个星期的时间,整理了我在《天文算法》一贴中的程序,并加上一个日历计算组件,可供日历爱好者使用。
程序共70多千字节,其中注释部分占了1/3。
算法:VSOP87及ELP/MPP02半解析法。
数据:日月运动数据拟合了DE405,章动使用IAU1982,岁差及恒星时使用IAU2000。
由于基本使用了最现代的数据,所以计算的精度与《2008中国天文年历》平均吻合到0.1角秒数量级(太阳),1角秒(月亮)。
当然,日历计算根本无需这么高的精度。因为日历计算只需保证最近几十年内没有错误就可以了。因为,不论是遥远的过去或者是将来,由于地球自转速度的不均匀,我们对日历时间的把握无法很准确。除非使用原子钟定日历,但是,我们使用地球自转及日月运转定日历,这注定我们无法把基于天文算法的农历算得绝对精确。
感谢 jyarmy 帮我购买了《2008年中国天文年历》
感谢 春光 提供了《瑞士星历表》的下载地址
通过《2008中国天文年历》和《瑞士星历表》,使用我们能够进一步检验计算的精度。顺便说一下,《2008中国天文年历》的精度是非常高的,它不是手工计算的,是用计算机算出来的。
程序中的算法涉及的天文学及日历方面的知识比较多,可以写成一本书,有兴趣者可以合著,靠我一人看来是写不成的。