📄 xx3.htm
字号:
<script language=javascript>
function int2(v){ return Math.floor(v);}
var JD={ //日期元件
Y:2000, M:1, D:1, h:12, m:0, s:0,
toJD:function(){ //公历转儒略日
var y=this.Y, m=this.M, n=0; //取出年月
if(m<=2) m+=12,y--;
if(this.Y*372+this.M*31+this.D>=588829)//判断是否为格里高利历日1582*372+10*31+15
n =int2(y/100), n =2-n+int2(n/4);//加百年闰
n +=int2(365.25*(y+4716)+0.01); //加上年引起的偏移日数
n +=int2(30.6*(m+1))+this.D; //加上月引起的偏移日数及日偏移数
n +=((this.s/60+this.m)/60+this.h)/24 - 1524.5;
return n;
},
setFromJD:function(jd){ //儒略日数转公历
jd+=0.5;
var A=int2(jd), F=jd-A, D; //取得日数的整数部份A及小数部分F
if(A>=2299161) D=int2((A-1867216.25)/36524.25),A+=1+D-int2(D/4);
A +=1524; //向前移4年零2个月
this.Y =int2((A-122.1)/365.25);//年
D =A-int2(365.25*this.Y); //去除整年日数后余下日数
this.M =int2(D/30.6001); //月数
this.D =D-int2(this.M*30.6001);//去除整月日数后余下日数
this.Y-=4716; this.M--;
if(this.M>12) this.M-=12;
if(this.M<=2) this.Y++;
//日的小数转为时分秒
F*=24; this.h=int2(F); F-=this.h;
F*=60; this.m=int2(F); F-=this.m;
F*=60; this.s=F;
},
toStr:function(){ //日期转为串
var Y=" "+this.Y,M="0"+this.M, D="0"+this.D;
var h=this.h,m=this.m,s=int2(this.s+.5);
if(s>=60) s-=60,m++;
if(m>=60) m-=60,h++;
h="0"+h; m="0"+m; s="0"+s;
Y=Y.substr(Y.length-5,5); M=M.substr(M.length-2,2); D=D.substr(D.length-2,2);
h=h.substr(h.length-2,2); m=m.substr(m.length-2,2); s=s.substr(s.length-2,2);
return Y+"-"+M+"-"+D+" "+h+":"+m+":"+s;
}
};
var gan=Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
gan['甲']=0;gan['乙']=1;gan['丙']=2;gan['丁']=3;gan['戊']=4;
gan['己']=5;gan['庚']=6;gan['辛']=7;gan['壬']=8;gan['癸']=9;
function getsjb(lun,nd,ra,ye){//取数据表
var i,j,k,p,v,v2,rn,Y;
nd=nd.split(" "); for(i=0;i<4;i++) nd[i]-=0;
//提取朔日和节气
JD.h=12;JD.m=JD.s=0;
ra.length=ye.length=0;
var n1=-1,n2=-1;
var qa=new Array();
for(i=0;i<lun.length;i++){
v=lun[i]; if(!v) continue;
if(v.substr(0,1)=="-") {
Y=v-0, rn=1;
continue;
}
if(Y==nd[0] && rn==nd[1]) n1=qa.length;
if(Y==nd[2] && rn==nd[3]) n2=qa.length;
JD.Y = Y;
JD.M = v.substr(0,2)-0;
JD.D = v.substr(2,2)-0;
if(rn<6&&JD.M>8) JD.Y--;
if(rn>8&&JD.M<5) JD.Y++;
qa[qa.length]=JD.toJD(); //初一
if(rn==1) ye[ye.length]=qa.length-1; //年首的月积数
rn++;
}
if(n1==-1||n2==-1) return 'err';
//取朔
for(i=n1;i<=n2;i++) ra[ra.length]=qa[i];
ra.jd=ra[0]-0.5;
for(i=1;i<ra.length;i++) ra[i]-=ra[0];
ra[0]=0;
}
function nihe(r,k){//拟合计算
var b=0;
//var k=365.2422/8; if(r[1]-r[0]<33) k=29.5306; //斜率
var i,j,kk,v;
var k1=k-1,k2=k+1;
for(kk=0;kk<12;kk++){ //查找次数
var bm=-1000,bM=1000,bmi=-1;
for(i=0;i<r.length;i++){
v=r[i]-(k*i+b); //直线至少要上移的量
if(v>bm) bm=v,bmi=i;
if(v<bM) bM=v;
}
var h=(bM+1-bm)/2;
if(h>-1e-7){ b+=bm+h; r.gk = k; r.gb = b; r.gh = h; return "ok"; }
for(i=0;i<r.length;i++){
if(i==bmi) continue;
v=( r[i]+1 - r[bmi] ) / (i-bmi);
if(i<bmi && v>k1) k1=v;
if(i>bmi && v<k2) k2=v;
if(k1>k2) return "无解";
}
k=(k1+k2)/2;
b=r[bmi]-k*bmi;
}
return "查找"+kk+"次未找到解";
}
function chec(){
var i, nd=tin.innerText, ta=nlb.innerText, s='',c2;
var ra=new Array(), ye=new Array();
nd=nd.split('\r\n');
ta=ta.split('\r\n');
for(i=0;i<nd.length;i++){
if(!nd[i]) continue;
if(getsjb(ta,nd[i],ra,ye)=='err') alert("表提取错误");
c2=nihe(ra,29+499/940);
if(c2=='ok') s += (ra.gb+ra.jd).toFixed(6)+' ' + ra.gk.toFixed(8) + ' h=' + ra.gh.toFixed(8) +'\r\n';
else s += c2+'\r\n';
}
//年积数处理
c2=nihe(ye,12.37);
if(c2=='ok'){
s+='年首积月 b='+ye.gb.toFixed(6)+' k='+ye.gk.toFixed(8)+' h='+ye.gh.toFixed(6);
} else s+='年首月积无解';
//alert(ra);
out.innerText = '适用于-721年-479年\r\n平朔\r\n'+s;
JD.setFromJD(ra.jd+0.5+ra[ra.length-1])
// alert( JD.toStr() );
}
/**
错误
#号表示改后与《中西历日...》不符
-701.06.02 改 06.01 #
-654.12.15 改 12.16 #
-618.06.14 改 06.13
-579.09.29 改 09.28
-577.12.05 改 12.15
-571.12.27 改 12.28
-535.06.26 改 06.25 #
-491.01.22 改 01.23 #
-491.03.22 改 03.23 #
-487.01.08 改 01.09 #
**/
</script>
<a href=index.htm>返回</a>
<input type=button value='确定' onclick="chec()"><br>
<textarea id=tin cols=80 rows=20>
-721 1 -479 12
</textarea><br>
<textarea id=out cols=80 rows=20></textarea><br>
<textarea id=nlb style="display:none">
-721
1217
0116
0214
0316
0414
0514
0612
0712
0810
0909
1009
1107
-720
1207
0105
0204
0304
0403
0502
0601
0630
0730
0828
0927
1026
1125
-719
1224
0123
0222
0323
0422
0521
0620
0719
0818
0916
1016
1114
-718
1214
0112
0211
0312
0411
0511
0609
0709
0807
0906
1005
1104
-717
1203
0102
0131
0302
0331
0430
0529
0628
0727
0826
0925
1024
1123
-716
1222
0121
0219
0320
0418
0518
0616
0716
0814
0913
1012
1111
-715
1211
0109
0208
0309
0408
0507
0606
0705
0804
0902
1002
1031
-714
1130
1229
0128
0226
0328
0427
0526
0625
0724
0823
0921
1021
1119
-713
1219
0117
0216
0317
0416
0515
0614
0713
0812
0911
1010
1109
-712
1208
0107
0205
0306
0404
0504
0602
0702
0731
0830
0928
1028
1127
-711
1226
0125
0223
0325
0423
0523
0621
0721
0819
0918
1017
1116
-710
1215
0114
0212
0314
0413
0512
0611
0710
0809
0907
1007
1105
-709
1205
0103
0202
0303
0402
0501
0531
0629
0729
0828
0926
1026
1124
-708
1224
0122
0221
0321
0420
0519
0618
0717
0816
0914
1014
1113
-707
1212
0111
0209
0311
0409
0509
0607
0707
0805
0904
1003
1102
-706
1201
1231
0129
0228
0330
0428
0528
0626
0726
0824
0923
1022
1121
-705
1220
0119
0217
0319
0417
0517
0615
0715
0814
0912
1012
1110
-704
1210
0108
0207
0307
0406
0505
0604
0703
0802
0831
0930
1030
-703
1128
1228
0126
0225
0326
0425
0524
0623
0722
0821
0919
1019
1117
-702
1217
0115
0214
0316
0414
0514
0612
0712
0810
0909
1008
1107
-701
1206
0105
0203
0305
0403
0503
0601
0701
0731
0829
0928
1027
1126
-700
1225
0124
0222
0323
0421
0521
0619
0719
0817
0916
1016
1114
-699
1214
0112
0211
0312
0411
0510
0609
0708
0807
0905
1005
1103
-698
1203
0101
0131
0302
0331
0430
0529
0628
0727
0826
0924
1024
1122
-697
1222
0120
0219
0320
0419
0518
0617
0717
0815
0914
1013
1112
-696
1211
0110
0208
0309
0407
0507
0605
0705
0803
0902
1002
1031
-695
1130
1229
0128
0226
0328
0426
0526
0624
0724
0822
0921
1020
1119
-694
1218
0117
0216
0317
0416
0515
0614
0713
0812
0910
1010
1108
-693
1208
0106
0205
0306
0405
0504
0603
0703
0801
0831
0929
1029
1127
-692
1227
0125
0224
0324
0423
0522
0621
0720
0819
0918
1017
1116
-691
1215
0114
0212
0314
0412
0512
0610
0710
0808
0907
1006
1105
-690
1204
0103
0202
0303
0402
0501
0531
0629
0729
0827
0926
1025
1124
-689
1223
0122
0220
0322
0420
0520
0619
0718
0817
0915
1015
1113
-688
1213
0111
0210
0310
0409
0508
0607
0706
0805
0904
1003
1102
-687
1201
1231
0129
0228
0329
0428
0527
0626
0725
0824
0922
1022
1120
-686
1220
0119
0217
0319
0417
0517
0615
0715
0813
0912
1011
1110
-685
1209
0108
0206
0308
0407
0506
0605
0704
0803
0901
1001
1030
-684
1129
1228
0127
0225
0326
0424
0524
0622
0722
0821
0919
1019
1117
-683
1217
0115
0214
0315
0414
0513
0612
0711
0810
0908
1008
1106
-682
1206
0105
0203
0305
0403
0503
0601
0701
0730
0829
0927
1027
1125
-681
1225
0123
0222
0324
0422
0522
0620
0720
0818
0917
1016
1115
-680
1214
0113
0211
0312
0410
0510
0608
0708
0807
0905
1005
1103
-679
1203
0101
0131
0301
0331
0429
0529
0627
0727
0825
0924
1023
1122
-678
1222
0120
0219
0320
0419
0518
0617
0716
0815
0913
1013
1111
-677
1211
0109
0208
0310
0408
0508
0606
0706
0804
0903
1002
1101
-676
1130
1230
0128
0227
0327
0426
0525
0624
0724
0822
0921
1020
1119
-675
1218
0117
0215
0317
0415
0515
0613
0713
0811
0910
1009
1108
-674
1208
0106
0205
0306
0405
0504
0603
0702
0801
0830
0929
1028
1127
-673
1226
0125
0224
0325
0424
0523
0622
0721
0820
0918
1018
1116
-672
1216
0114
0213
0313
0412
0511
0610
0710
0808
0907
1006
1105
-671
1204
0103
0201
0303
0401
0501
0530
0629
0728
0827
0925
1025
1124
-670
1223
0122
0220
0322
0420
0520
0618
0718
0816
0915
1014
1113
-669
1212
0111
0210
0311
0410
0509
0608
0707
0806
0904
1004
1102
-668
1202
1231
0130
0228
0329
0427
0527
0626
0725
0824
0922
1022
1120
-667
1220
0118
0217
0318
0417
0516
0615
0714
0813
0911
1011
1110
-666
1209
0108
0206
0308
0406
0506
0604
0704
0802
0901
0930
1030
-665
1128
1228
0127
0225
0327
0425
0525
0623
0723
0821
0920
1019
1118
-664
1217
0116
0214
0315
0413
0513
0612
0711
0810
0908
1008
1106
-663
1206
0104
0203
0304
0403
0502
0601
0630
0730
0828
0927
1027
1125
-662
1225
0123
0222
0323
0422
0521
0620
0719
0818
0916
1016
1114
-661
1214
0113
0211
0313
0411
0511
0609
0709
0807
0906
1005
1104
-660
1203
0102
0131
0301
0330
0429
0529
0627
0727
0825
0924
1023
1122
-659
1221
0120
0218
0320
0418
0518
0616
0716
0815
0913
1013
1111
-658
1211
0109
0208
0309
0408
0507
0606
0705
0804
0902
1002
1031
-657
1130
1230
0128
0227
0328
0427
0526
0625
0724
0823
0921
1021
1119
-656
1219
0117
0216
0316
0415
0515
0613
0713
0811
0910
1009
1108
-655
1207
0106
0204
0306
0404
0504
0602
0702
0801
0830
0929
1028
1127
-654
1226
0125
0223
0325
0423
0523
0621
0721
0819
0918
1017
1116
-653
1216
0114
0213
0314
0413
0512
0611
0710
0809
0907
1007
1105
-652
1205
0103
0202
0302
0401
0501
0530
0629
0728
0827
0925
1025
1123
-651
1223
0121
0220
0321
0420
0519
0618
0718
0816
0915
1014
1113
-650
1212
0111
0209
0311
0409
0509
0607
0707
0805
0904
1003
1102
-649
1202
1231
0130
0228
0330
0428
0528
0626
0726
0824
0923
1022
1121
-648
1220
0119
0217
0318
0417
0516
0615
0714
0813
0911
1011
1109
-647
1209
0107
0206
0307
0406
0505
0604
0704
0802
0901
0930
1030
-646
1128
1228
0126
0225
0326
0425
0524
0623
0722
0821
0919
1019
1118
-645
1217
0116
0214
0316
0414
0514
0612
0712
0810
0909
1008
1107
-644
1206
0105
0203
0304
0403
0502
0601
0630
0730
0828
0927
1026
1125
-643
1224
0123
0221
0323
0421
0521
0620
0719
0818
0916
1016
1114
-642
1214
0112
0211
0312
0411
0510
0609
0708
0807
0905
1005
1104
-641
1203
0102
0131
0302
0331
0430
0529
0628
0727
0826
0924
1024
1122
-640
1222
0120
0219
0320
0418
0518
0616
0716
0814
0913
1012
1111
-639
1210
0109
0207
0309
0407
0507
0606
0705
0804
0902
1002
1031
-638
1130
1229
0128
0226
0328
0426
0526
0624
0724
0822
0921
1021
1119
-637
1219
0117
0216
0317
0416
0515
0614
0713
0812
0910
1010
1108
-636
1208
0106
0205
0306
0404
0504
0602
0702
0731
0830
0928
1028
1126
-635
1226
0124
0223
0324
0423
0523
0621
0721
0819
0918
1017
1116
-634
1215
0114
0212
0314
0412
0512
0610
0710
0808
0907
1007
1105
-633
1205
0103
0202
0303
0402
0501
0531
0629
0729
0827
0926
1025
1124
-632
1224
0122
0221
0321
0420
0519
0618
0717
0816
0914
1014
1112
-631
1212
0110
0209
0310
0409
0509
0607
0707
0805
0904
1003
1102
-630
1201
1231
0129
0228
0329
0428
0527
0626
0725
0824
0923
1022
1121
-629
1220
0119
0217
0319
0417
0517
0615
0715
0813
0912
1011
1110
-628
1210
0108
0207
0307
0406
0505
0604
0703
0802
0831
0930
1029
-627
1128
1227
0126
0224
0326
0425
0524
0623
0722
0821
0919
1019
1117
-626
1217
0115
0214
0315
0414
0513
0612
0711
0810
0909
1008
1107
-625
1206
0105
0203
0305
0403
0503
0601
0701
0730
0829
0927
1027
1126
-624
1225
0124
0222
0323
0421
0521
0619
0719
0817
0916
1015
1114
-623
1213
0112
0210
0312
0411
0510
0609
0708
0807
0905
1005
1103
-622
1203
0101
0131
0301
0331
0429
0529
0627
0727
0826
0924
1024
1122
-621
1222
0120
0219
0320
0419
0518
0617
0716
0815
0913
1013
1112
-620
1211
0110
0208
0309
0407
0507
0605
0705
0803
0902
1001
1031
-619
1129
1229
0127
0226
0328
0426
0526
0624
0724
0822
0921
1020
1119
-618
1218
0117
0215
0317
0415
0515
0613
0713
0812
0910
1010
1108
-617
1208
0106
0205
0306
0405
0504
0603
0702
0801
0830
0929
1029
1127
-616
1227
0125
0224
0324
0423
0522
0621
0720
0819
0917
1017
1115
-615
1215
0113
0212
0314
0412
0512
0610
0710
0808
0907
1006
1105
-614
1204
0103
0201
0303
0401
0501
0530
0629
0729
0827
0926
1025
1124
-613
1223
0122
0220
0322
0420
0520
0618
0718
0816
0915
1015
1113
-612
1213
0111
0210
0310
0409
0508
0607
0706
0805
0903
1003
1101
-611
1201
1230
0129
0228
0329
0428
0527
0626
0725
0824
0922
1022
1120
-610
1220
0118
0217
0318
0417
0516
0615
0715
0813
0912
1011
1110
-609
1209
0108
0206
0308
0406
0506
0604
0704
0802
0901
1001
1030
-608
1129
1228
0127
0225
0326
0424
0524
0622
0722
0820
0919
1018
1117
-607
1216
0115
0214
0315
0414
0513
0612
0711
0810
0908
1008
1106
-606
1206
0104
0203
0304
0403
0502
0601
0701
0730
0829
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -