⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.htm

📁 返回 第一章 关于寿星万年历 第二章 公历与儒略日 第三章 回历计算 第四章 天文坐标 第五章 近现代农历的天文学性质及其规则 第六章 离散序列的直线拟合算法
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<html>
<head>
<TITLE>寿星万年历2008版(V3.05)</TITLE>
<META content="寿星万年历;万年历;农历;农历计算;算法;天文算法;伊斯兰历;回历;节气;交节时刻"  name=keywords>
<style>
td.body2{font-family: 宋体;font-size: 12px}
td.head {text-align: center; background-color: #F0F0F0; color: #000000; font-size: 14px; font-weight: bold}
td.body {font-family: 宋体; text-align: center;font-size: 12px}
span.da {font-family: Arial Black; text-align: center;font-size: 24px}
span.da2{font-family: Arial Black; text-align: center;font-size: 24px;color: #FF0000}
span.cur{background-color:#90D050}
</style>

<script language=javascript src=eph.js></script>  <!--星历模块-->
<script language=javascript src=JN.js></script>   <!--皇帝纪年模块-->
<script language=javascript src=JW.js></script>   <!--全国城市经纬数据库-->
<script language=javascript src=lunar.js></script><!--日历物件-->

</head>
<body>
<center>
<table width=770 border=0 cellpadding=0 cellspacing=0>
<tr><td width="100%" colspan=3 class=body2><span style='font-size:16px;font-weight:bold;color:#80C000'>寿星万年历 2008版(V3.05)</span> <font color=#FFCCCC>(适用范围-4712至9999年,其中-721年以后与实历相符)</font> </td></tr>
<tr>
 <td width=270 valign=top class=body2  style='line-height: 150%'>
 <b>本地时间 <span id=Clock1></span></b><br>
 <b>外地时间</b> <select id=Sel_dq onchange="change_dq()"></select><br><span id=Clock2></span><span id=Clock2_dq></span><hr>
 省份 <select id=Sel1 onchange="change(0)" style="width:80px"></select> 市 <select id=Sel2 onchange="change2()" style="width:100px"></select><br>
 站点坐标 <span id=Cal_zdzb></span>
 暂停<input id=Cal_pause type=checkbox><br>
 力学时<input id=Cal_T type=text value="0" size=20> <input type=button value="确定" onclick=zb_calc2()>
 <div id=Cal_zb></div>
 </td>

 <td width=470 class=body2 valign=top>
   <DIV id=YMBG style="Z-INDEX:-1; position:absolute; top:50; left:300; font-size=100pt;COLOR: #f0f0f0; font-family:Arial Black"></DIV>
   <table width="100%" cellspacing=2>
    <tr><td style="background-color:#0000A0" colspan=7 class=body2>
      <font color=white>公元<input type=text id=Cal_y size=4 value=2008>年<input type=text maxlength=2 id=Cal_m size=2 value=1>月<input type=button value="确定" onclick=getLunar()></font>
      <span id=Cal2 style="font-size:16px;color=#FFFF00;font-weight: bold"></span>
    </td></tr>
    <tr><td class=head width="14%">日</td><td class=head width="14%">一</td><td class=head width="14%">二</td><td class=head width="14%">三</td><td class=head width="14%">四</td><td class=head width="14%">五</td><td class=head width="14%">六</td></tr>
   </table>
   <div id=Cal3></div>
 </td>
 <td width=30 valign=top align=center class=body2><br><br><br><br>
  <a href='javascript:showNH()'>年号</a><br><br>
  年<br><input type=button onclick='changeYear(0)'  value='▲'><br>
    <input type=button onclick='changeYear(1)'  value='▼'><br><br>
  月<br><input type=button onclick='changeMonth(0)' value='↑'><br>
    <input type=button onclick='changeMonth(1)' value='↓'><br><br>
  <input type=button onclick='changeMonth(2)' value='今'><br><br>
  <a href='javascript:getNianli(1)'>年历1</a><br><br>
  <a href='javascript:getNianli(2)'>年历2</a><br><br>
  <a href='readme.htm'>帮助</a>
 </td>
</tr>
<tr><td colspan=3 width="100%">
 <table width="100%" border=0 cellpadding=3 cellspacing=2>
 <tr>
   <td width="40%" id=Cal4  class=body2 style='line-height: 150%'></td>
   <td width="30%" id=Cal5 class=body2 style='line-height: 150%'>
   </td><td width="30%" id=Cal6 class=body2 style='line-height: 150%'></td>
 </tr>
 </table>
</td></tr>
<tr><td colspan=3 width="100%" style="font-size:12px;background-color:#000000;color:#FFFFFF;line-height:150%" align=center>许剑伟 2008年7月设计. 阿剑工作室 All Rights Reserved, &copy; 2008</td></tr>
</table>
<div id=Cal_pan style="font-size:12px; position:absolute; z-index:1; width:160;FILTER: shadow(color=#333333,direction=135);display:none">
 <div id=Cal_pan_in style="background-color:#3333A0;width:150;text-align:center;line-height: 150%; color:#FFFFFF; display:block;filter:Alpha(opacity=80)">abc</div><br>
</div>


<script language=javascript>
//==========================
//页面生成有关的函数
//==========================
/********************
当前时间初始化
*********************/
var now=new Date();
var nowY,nowM,nowD,nowJD;
JD.Y  =nowY = now.getFullYear();
JD.M = nowM = now.getMonth()+1;
JD.D = nowD = now.getDate();
JD.h = JD.m = JD.s =0;
nowJD = int2(JD.toJD()+0.5)-2451545;
Cal_y.value = nowY;
Cal_m.value = nowM;

/********************
即时坐标计算等
*********************/
function shiCha(t,a,dL,E){ //时差计算
  t/=10;
  var L, t2=t*t,t3=t2*t,t4=t3*t,t5=t4*t;
  L = 1753469512 + 6283319653318*t + 529674*t2 + 432*t3 - 1124*t4 - 9*t5 + 630 * Math.cos(6+3*t);
  L = L/1000000000 + Math.PI; //太阳平黄经
  L = L - 20.5/rad - a + dL*Math.cos(E); //a是太阳视赤经
  L = rad2mrad(L);
  if(L>Math.PI) L-=pi2;
  return L;
}
function taiYangShi(jd,L,c){ //转入格林尼治时间UT及本地经度及时差,c=0返回本地平太阳时,c=时差就返回真太阳时,返回的单位是弧度
  var t=jd-L/pi2+c/pi2;
  JD.setFromJD(t+J2000);
  return JD.toStr().substr(12,8);
}


function zb_calc(T,L,fa){ //T是力学时,站点经纬L,fa
  var s,z=new Array(),z2=new Array(),z3=new Array();
  var dt  = JD.deltatT2(T);   //TD-UT
  var jd  = T-dt;             //得到J2000起算的的儒略数
  T/=36525; ZB.nutation(T);   //章动计算
  var E  = ZB.hcjj(T)+ZB.dE;  //真黄赤交角
  var dL = ZB.dL;             //黄经章动
  var gst= ZB.gst(jd,dt) + ZB.dL*Math.cos(E); //真恒星时(不考虑非多项式部分)
  var ShiJ;

  //月球坐标测试
  XL.M_coord(T,z,-1,-1,-1); //月球坐标
  z[0]  = rad2mrad( z[0]+ZB.gxc_moonLon(T)+ZB.dL );  //补上月球光行差及章动
  z[1] += ZB.gxc_moonLat(T);

  z2[0] = z[0], z2[1] = z[1], z2[2] = z[2];
  ZB.llrConv( z2, E ); //转为赤道坐标

  ShiJ = rad2mrad(gst - L - z2[0]); //得到此刻天体时角
  if( ShiJ>Math.PI ) ShiJ -= pi2;


  z3[0] = (Math.PI/2-ShiJ); z3[1] = z2[1]; z3[2]=z2[2]/1.496e8; //转到相对于地平赤道分点的赤道坐标
  ZB.parallax(z3,ShiJ,fa,0); //视差修正
  ZB.llrConv( z3, Math.PI/2-fa ); //转到地平坐标(只改经纬度)
  z3[0] = rad2mrad( Math.PI/2-z3[0] );
  if(z3[1]>0) z3[1] += ZB.AR2(z3[1]); //大气折射修正

  s  = '<b>月球的当日真分点地心坐标</b><br>';
  s += '视黄经 ' + rad2str(z[0],0);
  s += '视黄纬 ' + rad2str(z[1],0)+'<br>';
  s += '视赤经 ' + rad2str(z2[0],1);
  s += '视赤纬 ' + rad2str(z2[1],0)+'<br>';
  s += '径距离 ' + int2(z[2]+0.5)+'千米 ';
  s += '平时角 ' + rad2str(ShiJ,0) + '<br>';
  s += "方位角 " + rad2str(z3[0],0);
  s += "高度角 " + rad2str(z3[1],0) + "<br>";
  s += "亮面比例 " + ( int2(XL.moonIll(T)*100000+0.5)/1000 )+'% ';
  s += "站心视半径 " + (int2(XL.moonRad(z[2],z3[1])/60*100+0.5)/100)+"'<br>";


  XL.E_coord(T,z,-1);   //地球坐标
  z[0]  = rad2mrad(z[0]+Math.PI+ZB.gxc_sunLon(T)+ZB.dL);  //补上太阳光行差及章动
  z[1]  =-z[1] + ZB.gxc_sunLat(T); //z数组为太阳地心黄道视坐标

  z2[0] = z[0], z2[1] = z[1], z2[2] = z[2];
  ZB.llrConv( z2, E ); //z2太阳地心赤道坐标

  ShiJ = rad2mrad(gst - L - z2[0]); //得到此刻天体时角
  if( ShiJ>Math.PI ) ShiJ -= pi2;

  z3[0] = (Math.PI/2-ShiJ); z3[1] = z2[1]; z3[2]=z2[2];  //转到相对于地平赤道分点的赤道坐标
  //ZB.parallax(z3,ShiJ,fa,0); //视差修正
  ZB.llrConv( z3, Math.PI/2-fa );
  z3[0] = rad2mrad( Math.PI/2-z3[0] );
  if(z3[1]>0) z3[1] += ZB.AR2(z3[1]); //大气折射修正
  z3[1] -= 8.794/rad/z3[2]*Math.cos(z3[1]); //直接在地平坐标中视差修正(这里把地球看为球形,精度比ZB.parallax()稍差一些)

  s += '<b>太阳的当日真分点地心坐标</b><br>';
  s += '视黄经 ' + rad2str(z[0],0);
  s += '视黄纬 ' + rad2str(z[1],0) + '<br>';
  s += '视赤经 ' + rad2str(z2[0],1);
  s += '视赤纬 ' + rad2str(z2[1],0) + '<br>';
  s += '径距离 ' + (int2(z2[2]*1000000+0.5)/1000000) + 'AU ';
  s += '平时角 ' + rad2str(ShiJ,0) + '<br>'; //天顶到天体视赤经的差
  s += '方位角 ' + rad2str(z3[0],0);
  s += '高度角 ' + rad2str(z3[1],0) + '<br>';

  var sc=shiCha(T,z2[0],dL,E); //时差
  var sc_str=rad2str(sc,1);
  sc_str = sc_str.substr(0,1)+sc_str.substr(6,10);

  s += '时差 ' + sc_str + '<br>';
  s += '本地平太阳时 ' + taiYangShi(jd,L,0)+' 真太阳时 '+ taiYangShi(jd,L,sc)+'<br>';

  return s;
}
function RTS1(jd,vJ,vW){
 SZJ.calcRTS(jd, 1, vJ, vW, -8); //升降计算,使用北时时间,-8指东8区
 var s, ob = SZJ.rts[0];
 JD.setFromJD(jd+J2000);
 s = '日期' + JD.toStr().substr(0,11)+'<br>';
 s += '日出 '+ob.s +' 日上中天 '+ob.z +'<br>';
 s += '日落 '+ob.j +' 月上中天 '+ob.Mz+'<br>';
 s += '月出 '+ob.Ms+' 晨光开始 '+ob.c +'<br>';
 s += '月落 '+ob.Mj+' 昏影终止 '+ob.h +'<br>';
 s += '昼长 '+ob.sj+' 光照时间 '+ob.ch+'<br>';
 return s;
}

/********************
cookie读写函数
*********************/
function getCookie(name) {
  var start,end, s = document.cookie;
  start = s.indexOf(name + '=');  if (start == -1) return '';
  start += name.length + 1;
  end = s.indexOf(';', start);
  if (end == -1) end = s.length;
  return unescape(s.substring(start, end));
}
function setCookie(name,value){
   var Days = 700; //此 cookie 将被保存多天
   var exp  = new Date();
   exp.setTime(exp.getTime() + Days*86400*1000);
   document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}







/****************
地理经纬度选择的页面控制函数
****************/
function addOp(sel,v,t){
  var Op = document.createElement("OPTION");
  Op.value=v;  Op.text=t;
  sel.add(Op);
}
function change2(){
  var i,v = new JWdecode( Sel2.options[Sel2.selectedIndex].value );
  Sel2.vJ = v.J; Sel2.vW = v.W;
  Cal_zdzb.innerHTML = 'L='+rad2str2(v.J)+' φ='+rad2str2(v.W);
  if(Cal5.bak){
    Cal5.bak = RTS1(nowJD, v.J, v.W);
    Cal5.innerHTML = Cal5.bak;
  }
  setCookie('Sel1',Sel1.selectedIndex);
  setCookie('Sel2',Sel2.selectedIndex);
}
function change(def){
  if(def) Sel1.selectedIndex = getCookie('Sel1');
  Sel2.length=0; 
  var i, ob=JWv[ Sel1.options[Sel1.selectedIndex].value-0 ];
  for(i=1; i<ob.length; i++)
   addOp( Sel2, ob[i].substr(0,4), ob[i].substr(4,ob[i].length-4) );
  if(def) Sel2.selectedIndex = getCookie('Sel2');
  change2();
}
var i;
for(i=0;i<JWv.length;i++) addOp(document.all.Sel1,i,JWv[i][0]);
change(1);

/****************
外地时间选择
****************/
function change_dq(){
  var v = Sel_dq.options[Sel_dq.selectedIndex].value;
  Clock2_dq.innerHTML = '['+v.substr(6,v.length-6)+']';
  Sel_dq.v = v;
}
function change_dq_time(jd){
  var v = Sel_dq.v, h=(v.substr(1,2)-0) + v.substr(3,2)/60;
  if(v.substr(0,1)=='-') h = -h;
  JD.setFromJD(jd+J2000);
  var h2=h;
  if(v.substr(5,1)=='*'){
   if(JD.M==4){
     var w = ( 8-(jd-JD.D+1)%7 )%7; //本月第一天与星期天相差的天数
     if(JD.D-1>w) h2++;
   }
   if(JD.M==10){
     var w = ( 6+(jd-JD.D+31)%7 )%7; //本月最后一天的星期
     if(31-JD.D>w) h2++;
   }
   if(JD.M>4&&JD.M<10) h2++;
  }
  JD.setFromJD(jd+J2000+h2/24);
  Clock2.innerHTML = JD.toStr() + (h2==h?'':'<font color=red>¤</font>');
}
for(i=0;i<SQv.length;i++){
  var c=SQv[i].split(';');
  addOp(Sel_dq,c[0],c[1]);
}
change_dq();


/**********************
背景生成相关
**********************/

var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
function getTop(e){ //获取元素的纵坐标,显示背景年月时用到
 var offset=e.offsetTop;
 if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
 return offset;
}
function getLeft(e){ //获取元素的横坐标
 var offset=e.offsetLeft;
 if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
 return offset;
}

/**********************
月历页面生成
**********************/
function showNH(){ //显示年号
  alert(Lunar.lun.nianhao.nh2);
}

var get_year_screen_onceBC = 0;
function get_year_screen(c){ //取输入年份,主要解决公元前的输入问题
 var y = String(c).replace(/[^0-9Bb\*-]/g,'');
 var q = y.substr(0,1);
 if( q=='B' || q=='b' || q=='*' ){ //通用纪年法(公元前)
   y = 1-y.substr(1,y.length);
   if(y>0) { alert('通用纪法的公元前纪法从B.C.1年开始。并且没有公元0年'); return -10000; }
 }else{
   y -= 0;
   if(y<=0 && !get_year_screen_onceBC){
     alert('你输入的是天文纪年,用负号表示公元前。通用纪年法可用BC或bc或B或b或*表示公元前。');
     get_year_screen_onceBC =1;
   }
 }

 if( y < -4712 ) { alert('不得小于B.C. 4713'); return -10000; }
 if( y > 9999  )   alert('超过9999年的农历计算很不准。');
 return y;
}

function set_year_screen(y){ //输入天文纪年,转回显示用的常规纪年
 y -= 0;
 if( y<=0 ) return 'B'+ (-y+1);
 return ''+y;
}

function showMessD(n,bak){ //显时月、日摘要信息。调用前应先执Lunar.calc2()
 if(event){ if(event.ctrlKey) return; }

 if(n==-1){
   Cal_pan.style.display = 'none';
   Cal5.innerHTML = Cal5.bak;
   Cal6.innerHTML = Cal6.bak;
   return;
 }

 var ob = Lunar.lun[n];
 Cal5.innerHTML = RTS1(ob.d0, Sel2.vJ-0, Sel2.vW-0);
 Cal6.innerHTML = '儒略日数 ' + (ob.d0+J2000) + '<br>' +ob.y+'-'+ob.m+'-'+ob.d+' '+ob.Lyear2 + '年 '+ ob.Lmonth2 + '月 ' + ob.Lday2 + '日<br>' + ob.Ltime2;

 if(window.event && window.event.srcElement.tagName=='SPAN'){
  s  = set_year_screen(ob.y) + '年' + ob.m + '月' + ob.d + '日<br>'
  s += '星期' + Lunar.Weeks[ob.week] + ' ' + ob.XiZ +'<br>';
  s += ob.Lleap + ob.Lmc + '月' + (ob.Ldn>29?'大 ':'小 ') + ob.Ldc + '日<br>';
  s += ob.Lyear2+'年 '+ob.Lmonth2+'月 '+ob.Lday2+'日<br>';
  s += '回历['+ob.Hyear+'年'+ob.Hmonth+'月'+ob.Hday+'日]<br>';
  if(ob.yxmc) s += ob.yxmc+' '+ob.yxsj+' ';
  if(ob.jqmc) s += '定'+ob.jqmc+' '+ob.jqsj+'<br>';
  else { if(ob.Ljq) s += ob.Ljq+'<br>';}
  if(ob.A)    s += ob.A +' ';
  if(ob.B)    s += ob.B +' ';
  if(ob.C)    s += ob.C;
  Cal_pan.style.display = 'block'; //先显示再传值屏幕流畅
  Cal_pan_in.innerHTML = s;
  Cal_pan.style.left = window.event.x+document.body.scrollLeft-80;
  Cal_pan.style.top  = window.event.y+document.body.scrollTop +((ob.weeki+2<ob.weekN) ? 25:-150);
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -