javascript 获取输入出阳历和阴历日期时间

JavaScript06

javascript 获取输入出阳历和阴历日期时间,第1张

<script language="JavaScript">

<!--

var bsYear

var bsDate

var bsWeek

var arrLen=8//数组长度

var sValue=0//当年的秒数

var dayiy=0//当年第几天

var miy=0//月份的下标

var iyear=0//年份标记

var dayim=0//当月第几天

var spd=86400//每天的秒数

var year1999="302929302929302930303029"//354

var year2000="303029293029293029303029"//354

var year2001="30302930293029293029302930"//384

var year2002="303029302930292930293029"//354

var year2003="303029303029302929302930"//355

var year2004="29302930302930293029302930"//384

var year2005="293029302930302930293029"//354

var year2006="30293029303029293030292930"

var month1999="正月二月三月四月五月六月七月八月九月十月十一月十二月"

var month2001="正月二月三月四月闰四月五月六月七月八月九月十月十一月十二月"

var month2004="正月二月闰二月三月四月五月六月七月八月九月十月十一月十二月"

var month2006="正月二月三月四月五月六月七月闰七月八月九月十月十一月十二月"

var Dn="初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十"

var Ys=new Array(arrLen)

Ys[0]=919094400Ys[1]=949680000Ys[2]=980265600

Ys[3]=1013443200Ys[4]=1044028800Ys[5]=1074700800

Ys[6]=1107878400Ys[7]=1138464000

var Yn=new Array(arrLen)//农历年的名称

Yn[0]="己卯年"Yn[1]="庚辰年"Yn[2]="辛巳年"

Yn[3]="壬午年"Yn[4]="癸未年"Yn[5]="甲申年"

Yn[6]="乙酉年"Yn[7]="丙戌年"

var D=new Date()

var yy=D.getYear()

var mm=D.getMonth()+1

var dd=D.getDate()

var ww=D.getDay()

if (ww==0) ww="<font color=RED>星期日"

if (ww==1) ww="星期一"

if (ww==2) ww="星期二"

if (ww==3) ww="星期三"

if (ww==4) ww="星期四"

if (ww==5) ww="星期五"

if (ww==6) ww="<font color=RED>星期六"

ww=ww

var ss=parseInt(D.getTime() / 1000)

if (yy<100) yy="19"+yy

for (I=0I<arrLenI++)

if (ss>=Ys[I])...{

iyear=I

sValue=ss-Ys[I]//当年的秒数

}

dayiy=parseInt(sValue/spd)+1//当年的天数

var dpm=year1999

if (iyear==1) dpm=year2000

if (iyear==2) dpm=year2001

if (iyear==3) dpm=year2002

if (iyear==4) dpm=year2003

if (iyear==5) dpm=year2004

if (iyear==6) dpm=year2005

if (iyear==7) dpm=year2006

dpm=dpm.split("")

var Mn=month1999

if (iyear==2) Mn=month2001

if (iyear==5) Mn=month2004

if (iyear==7) Mn=month2006

Mn=Mn.split("")

var Dn="初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十"

Dn=Dn.split("")

dayim=dayiy

var total=new Array(13)

total[0]=parseInt(dpm[0])

for (I=1I<dpm.length-1I++) total[I]=parseInt(dpm[I])+total[I-1]

for (I=dpm.length-1I>0I--)

if (dayim>total[I-1])...{

dayim=dayim-total[I-1]

miy=I

}

bsWeek=ww

bsDate=yy+"年"+mm+"月"

bsDate2=dd

bsYear="农历"+Yn[iyear]

bsYear2=Mn[miy]+Dn[dayim-1]

if (ss>=Ys[7]||ss<Ys[0]) bsYear=Yn[7]

function CAL(){

document.write("<table border='1' cellspacing='3' width='90' bordercolor='#000000' bgcolor='#FFFFFF' height='110' cellpadding='2'")

document.write("<tr><td align='center'><b><font color=#008040>"+bsDate+"</font><br><font face='Arial' size='6' color=#FF8040>"+bsDate2+"</font><br><font color=#008040><span style='FONT-SIZE: 10.5pt'>")

document.write(bsWeek+"</span><br>"+"<br></b><font color=#9B4E00>")

document.write(bsYear+"<br>"+bsYear2+"</td></tr></table>")

}

//-->

</script>

<script language="javascript">CAL()</script>

其实我也不懂这个算法,网上粘贴的,我觉得可以不去深究这个公式,反正有现成代码:

设:公元年数-1977(或1901)=4Q+R

则:阴历日期=14Q+10.6(R+1)+年内日期序数-29.5n

(注:式中Q、R、n均为自然数,R<4)

例:1994年5月7日的阴历日期为:

1994-1977=17=4×4+1

故:Q=4,R=1 则:5月7日的阴历日期为:

14×4+10.6(1+1)+(31+28+31+30+7)-29.5n

=204.2- 29.5n

然后用29.5去除204.2得商数6......27.2,6即是n值,余数27即是阴历二十七日。

function RunGLNL(){ var today=new Date()var d=new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六")var DDDD=(today.getYear()<100 ? today.getYear()+1900:today.getYear())+"年"+(today.getMonth()+1)+"月"+today.getDate()+"日"DDDD = DDDD + " " + d[today.getDay()]DDDD = DDDD+ " " + (CnDateofDateStr(today))//DDDD = DDDD+ " " + SolarTerm(today)document.write(DDDD)} function DaysNumberofDate(DateGL){ return parseInt((Date.parse(DateGL)-Date.parse(DateGL.getYear()+"/1/1"))/86400000)+1} function CnDateofDate(DateGL){ var CnData=new Array( 0x16,0x2a,0xda,0x00,0x83,0x49,0xb6,0x05,0x0e,0x64,0xbb,0x00,0x19,0xb2,0x5b,0x00, 0x87,0x6a,0x57,0x04,0x12,0x75,0x2b,0x00,0x1d,0xb6,0x95,0x00,0x8a,0xad,0x55,0x02, 0x15,0x55,0xaa,0x00,0x82,0x55,0x6c,0x07,0x0d,0xc9,0x76,0x00,0x17,0x64,0xb7,0x00, 0x86,0xe4,0xae,0x05,0x11,0xea,0x56,0x00,0x1b,0x6d,0x2a,0x00,0x88,0x5a,0xaa,0x04, 0x14,0xad,0x55,0x00,0x81,0xaa,0xd5,0x09,0x0b,0x52,0xea,0x00,0x16,0xa9,0x6d,0x00, 0x84,0xa9,0x5d,0x06,0x0f,0xd4,0xae,0x00,0x1a,0xea,0x4d,0x00,0x87,0xba,0x55,0x04 )var CnMonth=new Array()var CnMonthDays=new Array()var CnBeginDayvar LeapMonthvar Bytes=new Array()var Ivar CnMonthDatavar DaysCountvar CnDaysCountvar ResultMonthvar ResultDayvar yyyy=DateGL.getYear()var mm=DateGL.getMonth()+1var dd=DateGL.getDate()if(yyyy<100) yyyy+=1900if ((yyyy <1997) || (yyyy >2020)){ return 0} Bytes[0] = CnData[(yyyy - 1997) * 4]Bytes[1] = CnData[(yyyy - 1997) * 4 + 1]Bytes[2] = CnData[(yyyy - 1997) * 4 + 2]Bytes[3] = CnData[(yyyy - 1997) * 4 + 3]if ((Bytes[0] &0x80) != 0) {CnMonth[0] = 12} else {CnMonth[0] = 11} CnBeginDay = (Bytes[0] &0x7f)CnMonthData = Bytes[1]CnMonthData = CnMonthData <<8CnMonthData = CnMonthData | Bytes[2]LeapMonth = Bytes[3]for (I=15I>=0I--){ CnMonthDays[15 - I] = 29if (((1 <<I) &CnMonthData) != 0 ){ CnMonthDays[15 - I]++} if (CnMonth[15 - I] == LeapMonth ){ CnMonth[15 - I + 1] = - LeapMonth} else{ if (CnMonth[15 - I] <0 ){CnMonth[15 - I + 1] = - CnMonth[15 - I] + 1} else {CnMonth[15 - I + 1] = CnMonth[15 - I] + 1} if (CnMonth[15 - I + 1] >12 ){ CnMonth[15 - I + 1] = 1} } } DaysCount = DaysNumberofDate(DateGL) - 1if (DaysCount <= (CnMonthDays[0] - CnBeginDay)){ if ((yyyy >1901) &&(CnDateofDate(new Date((yyyy - 1)+"/12/31")) <0)){ ResultMonth = - CnMonth[0]} else {ResultMonth = CnMonth[0]} ResultDay = CnBeginDay + DaysCount} else{ CnDaysCount = CnMonthDays[0] - CnBeginDayI = 1while ((CnDaysCount <DaysCount) &&(CnDaysCount + CnMonthDays[I] <DaysCount)){ CnDaysCount+= CnMonthDays[I]I++} ResultMonth = CnMonth[I]ResultDay = DaysCount - CnDaysCount} if (ResultMonth >0){ return ResultMonth * 100 + ResultDay} else{return ResultMonth * 100 - ResultDay} } function CnYearofDate(DateGL){ var YYYY=DateGL.getYear()var MM=DateGL.getMonth()+1var CnMM=parseInt(Math.abs(CnDateofDate(DateGL))/100)if(YYYY<100) YYYY+=1900if(CnMM>MM) YYYY--YYYY-=1864return CnEra(YYYY)+"年"} function CnMonthofDate(DateGL){ var CnMonthStr=new Array("零","正","二","三","四","五","六","七","八","九","十","十一","腊")var MonthMonth = parseInt(CnDateofDate(DateGL)/100)if (Month <0){return "闰" + CnMonthStr[-Month] + "月"} else{return CnMonthStr[Month] + "月"} } function CnDayofDate(DateGL){ var CnDayStr=new Array("零", "初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十")var DayDay = (Math.abs(CnDateofDate(DateGL)))%100return CnDayStr[Day]} function DaysNumberofMonth(DateGL){ var MM1=DateGL.getYear()MM1<100 ? MM1+=1900:MM1var MM2=MM1MM1+="/"+(DateGL.getMonth()+1)MM2+="/"+(DateGL.getMonth()+2)MM1+="/1"MM2+="/1"return parseInt((Date.parse(MM2)-Date.parse(MM1))/86400000)} function CnEra(YYYY){ var Tiangan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸")//var Dizhi=new Array("子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)","巳(蛇)", //"午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)")var Dizhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥")return Tiangan[YYYY%10]+Dizhi[YYYY%12]} function CnDateofDateStr(DateGL){ if(CnMonthofDate(DateGL)=="零月") return " 请调整您的计算机日期!"else return "农历:"+CnYearofDate(DateGL)+ " " + CnMonthofDate(DateGL) + CnDayofDate(DateGL)} function SolarTerm(DateGL){ var SolarTermStr=new Array( "小寒","大寒","立春","雨水","惊蛰","春分", "清明","谷雨","立夏","小满","芒种","夏至", "小暑","大暑","立秋","处暑","白露","秋分", "寒露","霜降","立冬","小雪","大雪","冬至")var DifferenceInMonth=new Array( 1272060,1275495,1281180,1289445,1299225,1310355, 1321560,1333035,1342770,1350855,1356420,1359045, 1358580,1355055,1348695,1340040,1329630,1318455, 1306935,1297380,1286865,1277730,1274550,1271556)var DifferenceInYear=31556926var BeginTime=new Date(1901/1/1)BeginTime.setTime(947120460000)for(DateGL.getYear()<BeginTime.getYear()){ BeginTime.setTime(BeginTime.getTime()-DifferenceInYear*1000)} for(DateGL.getYear()>BeginTime.getYear()){ BeginTime.setTime(BeginTime.getTime()+DifferenceInYear*1000)} for(var M=0DateGL.getMonth()>BeginTime.getMonth()M++){ BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000)} if(DateGL.getDate()>BeginTime.getDate()){ BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000)M++} if(DateGL.getDate()>BeginTime.getDate()){ BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000)M==23?M=0:M++} var JQif(DateGL.getDate()==BeginTime.getDate()){ JQ=" 今天是<font color='#FF9999'><b>"+SolarTermStr[M] + "</b></font>"} else if(DateGL.getDate()==BeginTime.getDate()-1){ JQ=" 明天是<font color='#FF9999'><b>"+SolarTermStr[M] + "</b></font>"} else if(DateGL.getDate()==BeginTime.getDate()-2){ JQ=" 后天是<font color='#FF9999'><b>"+SolarTermStr[M] + "</b></font>"} else{ JQ=" " if(DateGL.getMonth()==BeginTime.getMonth()){ JQ+=" 本月"} else{ JQ+=" 下月"} JQ+=BeginTime.getDate()+"日"+"<font color='#FF9999'><b>"+SolarTermStr[M]+"</b></font>"} return JQ} function CAL() {} RunGLNL() 详细出处参考: http://www.jb51.net/article/17021.htm