亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 萬年歷的算法 .c

?? 數據結構實現代碼,詳細代碼請查看,本資源也是共享的.
?? C
字號:
摘自: 星期、干支、二十八宿計算公式 打印本頁 關閉本窗口 
1. 求星期公式
星期=[5+A(實際天數)] mod 7

2. 干支計算公式
六十甲子干支序號,從1->59->0。
六十甲子干支序號=[23+A(實際天數)] mod 60

3. 二十八宿計算公式
二十八宿序號=[23+A(實際天數)] mod 28

4. 實際天數A的計算
A=B(基本天數)+C(閏日天數)
B=(計算年-1)*365+(要計算到年的月日天數)
例:1984年2月1日的基本天數B=(1984-1)*365+(31+1)=723827(天),
其中,31是1月為31天,1為2月1日為1天。
公元308年8月28日的基本天數
B=(308-1)*365+(31+28+31+30+31+30+31+27)=112055+239=112294(天)
這里的(要計算到年的月日天數),用的是公歷,月日天數的規則我好
象小學就學過了。哈哈……

C=(計算年-1) div 4 -誤差修正值 + fixValue2
fixValue2為0或者1。常值為0,當年數為閏年(公歷閏年法)之中的3月
1日之后的為1。

誤差修正值推算:
公元元年1月1日至1582年10月14日為0。
1582年10月15日至1699年12月31日為10。
從1701年1月1日起每增加一個世紀累加1,但能被400除盡的世紀不累
加1。此方法推算即可。
--有一個問題,1700年這一年的修正值應為多少呢?算法中正好沒有
講到,但看來應該是10。

例1701年1月1日起誤差值為11,而1801年1月1日起誤差修正值為12,
而1901年1月1日起誤差修正值為13,
但2001年誤差修正值仍為13,因為2000年能被400整除,故不累加。而
2101年1月1日起誤差修正值為14。

5. 實例:1998.3.15的星期、干支與二十八宿
B=(1998-1)*365+(31+28+15)=728979
C=(1998-1) div 4 - 13 + 0 = 486
A=B+C=728979+486=729465
星期序號=(5+729465) mod 7=0,即為星期日
干支序號=(13+729465) mod 60=58,即為辛酉
二十八宿序號=(23+729465) mod 28=4,即為房

===================================================
好可怕!還有一些其它公式……但好象有些參數不知道怎么得到:

二十四節交節日算法:
用已知年的交接時辰加上22個小時35分,超過24要減去24,分數足60
進1個小時,即得到8年后的各節交節時辰。
如2000年雨水交節時辰為16時22分,則2008年雨水交節時辰為14時52
分。
因為16時22分+22時35分=38時57分。38-24=14時。
誰知道公元元年到公元八年的交節日,這個算法就可以實現了。--好
象逆算法可以解決這個問題。誰試試?

農歷閏月算法:
農歷中,二十四節氣(十二節氣和十二中氣)的中氣落在月末的話,下
個月就沒有中氣。農歷將這種有節(節氣)無氣(中氣)的月份規定為閏
月。平均計算,19年有七個閏月。
但二十四個節氣的十二節氣和十二中氣是怎么分的呢?我沒有資料,
估記應該是一節氣一中氣這樣交叉。 :(

unit CNYear; 

interface 
uses sysutils; 
type TCNDate = Cardinal; 
function DecodeGregToCNDate(dtGreg:TDateTime):TCNDate; 
function 
GetGregDateFromCN(cnYear,cnMonth,cnDay:word;bLeap:Boolean=Fal
se):TDateTime; 
function GregDateToCNStr(dtGreg:TDateTime):String; 
function isCNLeap(cnDate:TCNDate):boolean; 
implementation 
const cstDateOrg:Integer=32900; //公歷1990-01-27的TDateTime表
示 對應農歷1990-01-01 
const cstCNYearOrg=1990; 
const cstCNTable:array[cstCNYearOrg..cstCNYearOrg + 60] of 
WORD=( // unsigned 16-bit 
24402, 3730, 3366, 13614, 2647, 35542, 858, 1749, //1997 
23401, 1865, 1683, 19099, 1323, 2651, 10926, 1386, //2005 
32213, 2980, 2889, 23891, 2709, 1325, 17757, 2741, //2013 
39850, 1490, 3493, 61098, 3402, 3221, 19102, 1366, //2021 
2773, 10970, 1746, 26469, 1829, 1611, 22103, 3243, //2029 
1370, 13678, 2902, 48978, 2898, 2853, 60715, 2635, //2037 
1195, 21179, 1453, 2922, 11690, 3474, 32421, 3365, //2045 
2645, 55901, 1206, 1461, 14038); //2050 
//建表方法: 
// 0101 111101010010 高四位是閏月位置,后12位表示大小月,大月30
天,小月29天, 
//閏月一般算小月,但是有三個特例2017/06,2036/06,2047/05 
//對于特例則高四位的閏月位置表示法中的最高為設置為1 特殊處理
用wLeapNormal變量 
// //2017/06 28330->61098 2036/06 27947->60715 2047/05 
23133->55901 

//如果希望用匯編,這里有一條信息:農歷不會滯后公歷2個月. 
//將公歷轉換為農歷 
//返回:12位年份+4位月份+5位日期 
function DecodeGregToCNDate(dtGreg:TDateTime):TCNDate; 
var 
iDayLeave:Integer; 
wYear,wMonth,wDay:WORD; 
i,j:integer; 
wBigSmallDist,wLeap,wCount,wLeapShift:WORD; 
label OK; 
begin 
result := 0; 
iDayLeave := Trunc(dtGreg) - cstDateOrg; 
DecodeDate(IncMonth(dtGreg,-1),wYear,wMonth,wDay); 
if (iDayLeave < 0) or (iDayLeave > 22295 )then Exit; 
//Raise Exception.Create('目前只能算1990-01-27以后的'); 
//Raise Exception.Create('目前只能算2051-02-11以前的'); 
for i:=Low(cstCNTable) to High(cstCNTable) do begin 
wBigSmallDist := cstCNTable[i]; 
wLeap := wBigSmallDist shr 12; 
if wLeap > 12 then begin 
wLeap := wLeap and 7; 
wLeapShift := 1; 
end else 
wLeapShift := 0; 
for j:=1 to 12 do begin 
wCount:=(wBigSmallDist and 1) + 29; 
if j=wLeap then wCount := wCount - wLeapShift; 
if iDayLeave < wCount then begin 
Result := (i shl 9) + (j shl 5) + iDayLeave + 1; 
Exit; 
end; 
iDayLeave := iDayLeave - wCount; 
if j=wLeap then begin 
wCount:=29 + wLeapShift; 
if iDayLeave < wCount then begin 
Result := (i shl 9) + (j shl 5) + iDayLeave + 1 + (1 shl 21); 
Exit; 
end; 
iDayLeave := iDayLeave - wCount; 
end; 
wBigSmallDist := wBigSmallDist shr 1; 
end; 
end; 
//返回值: 
// 1位閏月標志 + 12位年份+4位月份+5位日期 (共22位) 
end; 
function isCNLeap(cnDate:TCNDate):boolean; 
begin 
result := (cnDate and $200000) <> 0; 
end; 
function 
GetGregDateFromCN(cnYear,cnMonth,cnDay:word;bLeap:Boolean=Fal
se):TDateTime; 
var 
i,j:integer; 
DayCount:integer; 
wBigSmallDist,wLeap,wLeapShift:WORD; 
begin 
// 0101 010010101111 高四位是閏月位置,后12位表示大小月,大月30
天,小月29天, 
DayCount := 0; 
if (cnYear < 1990) or (cnYear >2050) then begin 
Result := 0; 
Exit; 
end; 
for i:= cstCNYearOrg to cnYear-1 do begin 
wBigSmallDist := cstCNTable[i]; 
if (wBIgSmallDist and $F000) <> 0 then DayCount := DayCount + 
29; 
DayCount := DayCount + 12 * 29; 
for j:= 1 to 12 do begin 
DayCount := DayCount + wBigSmallDist and 1; 
wBigSmallDist := wBigSmallDist shr 1; 
end; 
end; 
wBigSmallDist := cstCNTable[cnYear]; 
wLeap := wBigSmallDist shr 12; 
if wLeap > 12 then begin 
wLeap := wLeap and 7; 
wLeapShift := 1; //大月在閏月. 
end else 
wLeapShift := 0; 
for j:= 1 to cnMonth-1 do begin 
DayCount:=DayCount + (wBigSmallDist and 1) + 29; 
if j=wLeap then DayCount := DayCount + 29; 
wBigSmallDist := wBigSmallDist shr 1; 
end; 
if bLeap and (cnMonth = wLeap) then //是要閏月的嗎? 
DayCount := DayCount + 30 - wLeapShift; 
result := cstDateOrg + DayCount + cnDay - 1; 
end; 

//將日期顯示成農歷字符串. 
function GregDateToCNStr(dtGreg:TDateTime):String; 
const hzNumber:array[0..10] of string=('零','一','二','三','
四','五','六','七','八','九','十'); 
function ConvertYMD(Number:Word;YMD:Word):string; 
var 
wTmp:word; 
begin 
result := ''; 
if YMD = 1 then begin //年份 
while Number > 0 do begin 
result := hzNumber[Number Mod 10] + result; 
Number := Number DIV 10; 
end; 
Exit; 
end; 
if Number<=10 then begin //可只用1位 
if YMD = 2 then //月份 
result := hzNumber[Number] 
else //天 
result := '初' + hzNumber[Number]; 
Exit; 
end; 
wTmp := Number Mod 10; //個位 
if wTmp <> 0 then result := hzNumber[wTmp]; 
wTmp := Number Div 10; //十位 
result:='十'+result; 
if wTmp > 1 then result := hzNumber[wTmp] + result; 
end; 
var 
cnYear,cnMonth,cnDay:word; 
cnDate:TCNDate; 
strLeap:string; 
begin 
cnDate:= DecodeGregToCNDate(dtGreg); 
if cnDate = 0 then begin 
result := '輸入越界'; 
Exit; 
end; 
cnDay := cnDate and $1F; 
cnMonth := (cnDate shr 5) and $F; 
cnYear := (cnDate shr 9) and $FFF; 
//測試第22位,為1表示閏月 
if isCNLeap(cnDate) then strLeap:='(閏)' else strLeap := ''; 
result := '農歷' + ConvertYMD(cnYear,1) + '年' + 
ConvertYMD(cnMonth,2) + '月' 
+ strLeap + ConvertYMD(cnDay,3) ; 
end; 
end.   

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一道本在线| 久久综合资源网| 欧美国产精品一区二区三区| 亚洲精品视频免费观看| 国产一区二区女| 欧美美女激情18p| 一区二区三区色| 风间由美一区二区av101| 日韩午夜在线观看视频| 亚洲 欧美综合在线网络| 色老汉一区二区三区| 国产精品―色哟哟| 国产精品一区二区不卡| 欧美va亚洲va香蕉在线| 日本女人一区二区三区| 欧美日韩精品一区二区三区| 亚洲九九爱视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 久久久天堂av| 麻豆精品国产传媒mv男同| 91.com视频| 日韩av中文在线观看| 91精品国产入口| 奇米888四色在线精品| 7777精品伊人久久久大香线蕉| 亚洲国产精品一区二区www在线| 色婷婷激情综合| 一区二区三区日韩欧美精品| 色天天综合色天天久久| 亚洲在线观看免费视频| 欧美日韩亚洲国产综合| 午夜私人影院久久久久| 欧美一级国产精品| 精品一区二区三区免费视频| 久久夜色精品一区| 成人激情文学综合网| 国产精品久久久久毛片软件| 99v久久综合狠狠综合久久| 一区二区在线观看av| 欧美视频日韩视频| 日韩电影免费在线| 欧美xxxxx牲另类人与| 国产不卡视频在线观看| 亚洲欧洲在线观看av| 欧美日韩在线三级| 蜜臀久久久久久久| 国产亚洲美州欧州综合国| 成人福利视频网站| 亚洲bdsm女犯bdsm网站| 日韩一级大片在线| 国产aⅴ精品一区二区三区色成熟| 中文字幕中文字幕一区二区| 欧美日韩精品一区二区在线播放| 美女网站在线免费欧美精品| 久久久精品国产免大香伊| 99久久er热在这里只有精品66| 亚洲精品免费播放| 欧美一激情一区二区三区| 国产精品99久| 亚洲自拍都市欧美小说| 欧美白人最猛性xxxxx69交| 成人美女视频在线看| 视频一区二区中文字幕| 国产欧美日韩中文久久| 色婷婷精品大在线视频| 韩国一区二区三区| 亚洲尤物视频在线| 亚洲精品在线免费观看视频| 色偷偷一区二区三区| 极品少妇一区二区| 香蕉影视欧美成人| 国产精品三级av| 91精品国产欧美一区二区成人 | 美女一区二区视频| 亚洲色欲色欲www| 日韩亚洲欧美一区| 在线免费观看日韩欧美| 国产成人在线电影| 麻豆精品在线播放| 亚洲一区在线观看网站| 国产精品女人毛片| 日韩精品中文字幕一区| 色8久久人人97超碰香蕉987| 国产真实乱偷精品视频免| 亚洲国产毛片aaaaa无费看| 中文字幕巨乱亚洲| 久久久综合激的五月天| 日韩女优电影在线观看| 欧美在线一区二区| 91香蕉视频mp4| 国产盗摄一区二区| 精品无人码麻豆乱码1区2区 | 欧美一区二区三区在线看| 97久久精品人人爽人人爽蜜臀| 极品少妇xxxx偷拍精品少妇| 天使萌一区二区三区免费观看| 亚洲色图丝袜美腿| 国产精品人成在线观看免费| 久久精品在线观看| 欧美精品一区视频| 精品国产欧美一区二区| 日韩一区二区三区电影在线观看| 欧美亚洲高清一区| 在线免费观看日本一区| 色综合av在线| 欧美色偷偷大香| 欧美午夜免费电影| 欧美揉bbbbb揉bbbbb| 在线亚洲+欧美+日本专区| 91性感美女视频| 97精品电影院| 欧洲国内综合视频| 欧美色图第一页| 欧美日韩免费视频| 7777精品伊人久久久大香线蕉完整版| 欧美少妇bbb| 欧美人成免费网站| 91精品国产综合久久精品性色| 欧美日韩久久一区| 日韩三级视频在线观看| 精品日韩av一区二区| 久久综合成人精品亚洲另类欧美| 久久伊99综合婷婷久久伊| 久久视频一区二区| 国产精品美女www爽爽爽| 亚洲欧洲日本在线| 亚洲宅男天堂在线观看无病毒| 午夜激情久久久| 久久成人免费网| 国产精品羞羞答答xxdd| fc2成人免费人成在线观看播放| 99视频一区二区| 欧美色视频一区| 日韩欧美一区电影| 欧美激情综合五月色丁香| 亚洲乱码国产乱码精品精小说 | 久久久精品免费网站| 国产精品久久一卡二卡| 亚洲成人av一区二区| 国产美女娇喘av呻吟久久| 色婷婷亚洲一区二区三区| 欧美一区二区在线观看| 国产日韩欧美高清| 亚洲福利国产精品| 国产毛片一区二区| 欧美手机在线视频| 国产亚洲人成网站| 婷婷六月综合亚洲| 99久久精品免费看国产 | 美女精品一区二区| av在线播放成人| 日韩精品一区二| 成人欧美一区二区三区黑人麻豆 | 国产精品18久久久| 欧美日本在线一区| 国产嫩草影院久久久久| 日日夜夜精品免费视频| 国产成人精品亚洲日本在线桃色| 在线视频中文字幕一区二区| 久久久久高清精品| 日韩高清不卡一区| 在线影院国内精品| 国产欧美日韩另类一区| 日韩成人午夜电影| 91激情五月电影| 欧美韩日一区二区三区| 蜜臀va亚洲va欧美va天堂| 91精品福利在线| 中文字幕一区二区在线播放 | 日本美女视频一区二区| 一本久久精品一区二区| 国产精品亲子乱子伦xxxx裸| 久久www免费人成看片高清| 欧美探花视频资源| 亚洲精品综合在线| 懂色av一区二区三区蜜臀| 日韩精品中文字幕一区| 午夜欧美电影在线观看| 色老汉av一区二区三区| 日韩美女视频一区二区| 成人精品免费网站| 欧美激情在线观看视频免费| 国产九色sp调教91| 久久免费精品国产久精品久久久久| 日韩不卡一区二区三区 | 国产丝袜欧美中文另类| 麻豆极品一区二区三区| 欧美一二三四在线| 日本欧美在线看| 91精品国产一区二区三区蜜臀| 亚洲图片欧美一区| 欧美系列一区二区| 亚洲一区二区三区中文字幕| 欧美探花视频资源| 日韩精品国产精品| 日韩欧美一级在线播放| 黑人巨大精品欧美黑白配亚洲| 精品伦理精品一区| 国产一区二区三区四| 国产婷婷一区二区|