陰歷顯示(農(nóng)歷)
來(lái)源:易賢網(wǎng) 閱讀:1787 次 日期:2014-09-10 16:44:02
溫馨提示:易賢網(wǎng)小編為您整理了“陰歷顯示(農(nóng)歷)”,方便廣大網(wǎng)友查閱!

<%

'Option Explicit

'***********************************************

' 類名稱:ChinaDay

' 用途:

' 根據(jù)輸入的日期計(jì)算該日期的農(nóng)歷天干地支及當(dāng)年屬相

' 使用方法:

' 第一個(gè)參數(shù)為輸入?yún)?shù),不填寫默認(rèn)為當(dāng)日,

' 只計(jì)算1921-2-8之后的日期

' ##-------------------------------------------##

' Dim objChinaDay

' Dim sDay, sWeekDay, sChinaDay, sChinaYear,sChinaAni

' Set objChinaDay = New ChinaDay

' Call objChinaDay.Action("",sDay,sWeekDay,sChinaYear,sChinaDay,sChinaAni)

' Response.Write sDay&"<BR>"

' Response.Write sWeekDay&"<BR>"

' Response.Write sChinaYear&"<BR>"

' Response.Write sChinaDay&"<BR>"

' Response.Write sChinaAni&"<BR>"

'*******************************************************

Class ChinaDay

Dim arrWeekName(7), MonthAdd(11), NongliData(99)

Dim arrTianGan(9), arrDiZhi(11), arrShuXiang(11), arrDayName(30), arrMonName(12)

Dim curTime, curYear, curMonth, curDay, curWeekday

Dim i, m, n, k, isEnd, bit, TheDate

'初始化數(shù)據(jù)

Sub Class_Initialize()

'---------------------------------------------------

'定義顯示字串

'星期名

arrWeekName(0) = "*"

arrWeekName(1) = "星期日"

arrWeekName(2) = "星期一"

arrWeekName(3) = "星期二"

arrWeekName(4) = "星期三"

arrWeekName(5) = "星期四"

arrWeekName(6) = "星期五"

arrWeekName(7) = "星期六"

'天干名稱

arrTianGan(0) = "甲"

arrTianGan(1) = "乙"

arrTianGan(2) = "丙"

arrTianGan(3) = "丁"

arrTianGan(4) = "戊"

arrTianGan(5) = "己"

arrTianGan(6) = "庚"

arrTianGan(7) = "辛"

arrTianGan(8) = "壬"

arrTianGan(9) = "癸"

'地支名稱

arrDiZhi(0) = "子"

arrDiZhi(1) = "丑"

arrDiZhi(2) = "寅"

arrDiZhi(3) = "卯"

arrDiZhi(4) = "辰"

arrDiZhi(5) = "巳"

arrDiZhi(6) = "午"

arrDiZhi(7) = "未"

arrDiZhi(8) = "申"

arrDiZhi(9) = "酉"

arrDiZhi(10) = "戌"

arrDiZhi(11) = "亥"

'屬相名稱

arrShuXiang(0) = "鼠"

arrShuXiang(1) = "牛"

arrShuXiang(2) = "虎"

arrShuXiang(3) = "兔"

arrShuXiang(4) = "龍"

arrShuXiang(5) = "蛇"

arrShuXiang(6) = "馬"

arrShuXiang(7) = "羊"

arrShuXiang(8) = "猴"

arrShuXiang(9) = "雞"

arrShuXiang(10) = "狗"

arrShuXiang(11) = "豬"

'農(nóng)歷日期名

arrDayName(0) = "*"

arrDayName(1) = "初一"

arrDayName(2) = "初二"

arrDayName(3) = "初三"

arrDayName(4) = "初四"

arrDayName(5) = "初五"

arrDayName(6) = "初六"

arrDayName(7) = "初七"

arrDayName(8) = "初八"

arrDayName(9) = "初九"

arrDayName(10) = "初十"

arrDayName(11) = "十一"

arrDayName(12) = "十二"

arrDayName(13) = "十三"

arrDayName(14) = "十四"

arrDayName(15) = "十五"

arrDayName(16) = "十六"

arrDayName(17) = "十七"

arrDayName(18) = "十八"

arrDayName(19) = "十九"

arrDayName(20) = "二十"

arrDayName(21) = "廿一"

arrDayName(22) = "廿二"

arrDayName(23) = "廿三"

arrDayName(24) = "廿四"

arrDayName(25) = "廿五"

arrDayName(26) = "廿六"

arrDayName(27) = "廿七"

arrDayName(28) = "廿八"

arrDayName(29) = "廿九"

arrDayName(30) = "三十"

'農(nóng)歷月份名

arrMonName(0) = "*"

arrMonName(1) = "正"

arrMonName(2) = "二"

arrMonName(3) = "三"

arrMonName(4) = "四"

arrMonName(5) = "五"

arrMonName(6) = "六"

arrMonName(7) = "七"

arrMonName(8) = "八"

arrMonName(9) = "九"

arrMonName(10) = "十"

arrMonName(11) = "十一"

arrMonName(12) = "臘"

'---------------------------------------------------------

'公差數(shù)據(jù)定義

'公歷每月前面的天數(shù)

MonthAdd(0) = 0

MonthAdd(1) = 31

MonthAdd(2) = 59

MonthAdd(3) = 90

MonthAdd(4) = 120

MonthAdd(5) = 151

MonthAdd(6) = 181

MonthAdd(7) = 212

MonthAdd(8) = 243

MonthAdd(9) = 273

MonthAdd(10) = 304

MonthAdd(11) = 334

'農(nóng)歷數(shù)據(jù)

NongliData(0) = 2635

NongliData(1) = 333387

NongliData(2) = 1701

NongliData(3) = 1748

NongliData(4) = 267701

NongliData(5) = 694

NongliData(6) = 2391

NongliData(7) = 133423

NongliData(8) = 1175

NongliData(9) = 396438

NongliData(10) = 3402

NongliData(11) = 3749

NongliData(12) = 331177

NongliData(13) = 1453

NongliData(14) = 694

NongliData(15) = 201326

NongliData(16) = 2350

NongliData(17) = 465197

NongliData(18) = 3221

NongliData(19) = 3402

NongliData(20) = 400202

NongliData(21) = 2901

NongliData(22) = 1386

NongliData(23) = 267611

NongliData(24) = 605

NongliData(25) = 2349

NongliData(26) = 137515

NongliData(27) = 2709

NongliData(28) = 464533

NongliData(29) = 1738

NongliData(30) = 2901

NongliData(31) = 330421

NongliData(32) = 1242

NongliData(33) = 2651

NongliData(34) = 199255

NongliData(35) = 1323

NongliData(36) = 529706

NongliData(37) = 3733

NongliData(38) = 1706

NongliData(39) = 398762

NongliData(40) = 2741

NongliData(41) = 1206

NongliData(42) = 267438

NongliData(43) = 2647

NongliData(44) = 1318

NongliData(45) = 204070

NongliData(46) = 3477

NongliData(47) = 461653

NongliData(48) = 1386

NongliData(49) = 2413

NongliData(50) = 330077

NongliData(51) = 1197

NongliData(52) = 2637

NongliData(53) = 268877

NongliData(54) = 3365

NongliData(55) = 531109

NongliData(56) = 2900

NongliData(57) = 2922

NongliData(58) = 398042

NongliData(59) = 2395

NongliData(60) = 1179

NongliData(61) = 267415

NongliData(62) = 2635

NongliData(63) = 661067

NongliData(64) = 1701

NongliData(65) = 1748

NongliData(66) = 398772

NongliData(67) = 2742

NongliData(68) = 2391

NongliData(69) = 330031

NongliData(70) = 1175

NongliData(71) = 1611

NongliData(72) = 200010

NongliData(73) = 3749

NongliData(74) = 527717

NongliData(75) = 1452

NongliData(76) = 2742

NongliData(77) = 332397

NongliData(78) = 2350

NongliData(79) = 3222

NongliData(80) = 268949

NongliData(81) = 3402

NongliData(82) = 3493

NongliData(83) = 133973

NongliData(84) = 1386

NongliData(85) = 464219

NongliData(86) = 605

NongliData(87) = 2349

NongliData(88) = 334123

NongliData(89) = 2709

NongliData(90) = 2890

NongliData(91) = 267946

NongliData(92) = 2773

NongliData(93) = 592565

NongliData(94) = 1210

NongliData(95) = 2651

NongliData(96) = 395863

NongliData(97) = 1323

NongliData(98) = 2707

NongliData(99) = 265877

End Sub

'############################################################

'主要方法 Action

' inDay 輸入日期,如果不輸入則默認(rèn)為當(dāng)前日期

' sDay 中文格式日期

' sWeekDay 周幾

' sChinaYear 農(nóng)歷年

' sChinaDay 農(nóng)歷日

' sChinaAni 屬相

'############################################################

Public Function Action(inDay,sDay,sWeekDay,sChinaYear,sChinaDay,sChinaAni)

'轉(zhuǎn)換要轉(zhuǎn)換的日期

If inDay="" Or Not IsDate(inDay) Then

'獲取當(dāng)前系統(tǒng)時(shí)間

curTime = Now()

Else

curTime = CDate(inDay)

End If

If Datediff("d",curTime,Cdate("1921-2-8"))>0 Then

Exit Function

End If

'生成當(dāng)前公歷年、月、日 ==> sDay

curYear = Year(curTime)

curMonth = Month(curTime)

curDay = Day(curTime)

sDay = curYear&"年"

If (curMonth < 10) Then

sDay = sDay&"0"&curMonth&"月"

Else

sDay = sDay&curMonth&"月"

End If

If (curDay < 10) Then

sDay = sDay&"0"&curDay&"日"

Else

sDay = sDay&curDay&"日"

End If

'生成當(dāng)前公歷星期 ==> sWeekDay

curWeekday = Weekday(curTime)

sWeekDay = arrWeekName(curWeekday)

'計(jì)算到初始時(shí)間1921年2月8日的天數(shù):1921-2-8(正月初一)

TheDate = (curYear - 1921) * 365 + Int((curYear - 1921) / 4) + curDay + MonthAdd(curMonth - 1) - 38

If ((curYear Mod 4) = 0 AND curMonth > 2) Then

TheDate = TheDate + 1

End If

'計(jì)算農(nóng)歷天干、地支、月、日

isEnd = 0

m = 0

'------------------------------------

Do

If (NongliData(m) < 4095) Then

k = 11

Else

k = 12

End if

n = k

'------------------------------------

Do

If (n < 0) Then

Exit Do

End If

'獲取NongliData(m)的第n個(gè)二進(jìn)制位的值

bit = NongliData(m)

For i = 1 To n Step 1

bit = Int(bit / 2)

Next

bit = bit Mod 2

If (TheDate <= 29 + bit) Then

isEnd = 1

Exit Do

End If

TheDate = TheDate - 29 - bit

n = n - 1

Loop

'------------------------------------

If (isEnd = 1) Then

Exit Do

End If

m = m + 1

Loop

'------------------------------------

curYear = 1921 + m

curMonth = k - n + 1

curDay = TheDate

If (k = 12) Then

If (curMonth = (Int(NongliData(m) / 65536) + 1)) Then

curMonth = 1 - curMonth

ElseIf (curMonth > (Int(NongliData(m) / 65536) + 1)) Then

curMonth = curMonth - 1

End if

End If

'生成農(nóng)歷天干、地支==> sChinaYear

sChinaYear = "農(nóng)歷"&arrTianGan(((curYear - 4) Mod 60) Mod 10)&arrDiZhi(((curYear - 4) Mod 60) Mod 12)&"年"

'生成屬相 == > sChinaAni

sChinaAni = arrShuXiang(((curYear - 4) Mod 60) Mod 12)

'生成農(nóng)歷月、日 ==> NongliDayStr

If (curMonth < 1) Then

sChinaDay = "閏"&arrMonName(-1 * curMonth)

Else

sChinaDay = arrMonName(curMonth)

End If

sChinaDay = sChinaDay&"月"

sChinaDay = sChinaDay & arrDayName(curDay)

End Function

End Class

%>

<%

Dim objChinaDay

Dim sDay, sWeekDay, sChinaDay, sChinaYear,sChinaAni

Set objChinaDay = New ChinaDay

Call objChinaDay.Action(request("data"),sDay,sWeekDay,sChinaYear,sChinaDay,sChinaAni)

Set objChinaDay = Nothing

'Response.Write sDay&"<BR>"

'Response.Write sWeekDay&"<BR>"

'Response.Write sChinaYear&"<BR>"

'Response.Write sChinaDay&"<BR>"

'Response.Write sChinaAni&"<BR>"

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>農(nóng)歷日歷</title>

<style>

.itm {font-family: 宋體; font-size: 14px;}

.chn {font-family: 宋體; font-size: 12px}

.chnred {font-family: 宋體; color: #FF0000; font-size: 12px}

.chnblue {font-family: 宋體; color: #0000FF; font-size: 12px}

</style>

</head>

<body bgcolor="#FFFFFF">

<!--顯示站點(diǎn)日歷-->

<%=sDay%> <%=sWeekDay%> <%=sChinaYear & "(" & sChinaAni & ")"%> <%=sChinaDay%>

<form action="?" method="post">

請(qǐng)輸入日期:<input type="text" name="data"><font color="#FF0000">例如:2006-8-5</font>

<br/>

<input type="submit" value="提交">

</form>

</body>

</html>

更多信息請(qǐng)查看IT技術(shù)專欄

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:陰歷顯示(農(nóng)歷)
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國(guó)考·省考課程試聽(tīng)報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)