帮你发下clsDay.asp文件,网上找的.没心情去研究了..
代码:
<% 'Option Explicit '*********************************************** ' 类名称:ChinaDay ' 用途: ' 根据输入的日期计算该日期的农历天干地支及当年属相 ' 使用方法: ' 第一个参数为输入参数,不填写默认为当日, ' 只计算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>" ' ##-------------------------------------------## ' Modify By:Babyt(阿泰) ' Mail: Babyt@mail.csdn.net ' Welcome To: ' http://blog.csdn.net/babyt/ ' http://www.facesun.cn ' Created At: 2005-2-20 ' Copyright: 本代码非原创,是2001年收集的,原作者未知。 ' License:Free '******************************************************* 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
'初始化数据 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) = "猪"
'农历日期名 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) = "三十"
'农历月份名 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) = "腊"
'---------------------------------------------------------
'公差数据定义
'公历每月前面的天数 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
'农历数据 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 输入日期,如果不输入则默认为当前日期 ' sDay 中文格式日期 ' sWeekDay 周几 ' sChinaYear 农历年 ' sChinaDay 农历日 ' sChinaAni 属相 '############################################################ Public Function Action(inDay,sDay,sWeekDay,sChinaYear,sChinaDay,sChinaAni)
'转换要转换的日期 If inDay="" Or Not IsDate(inDay) Then '获取当前系统时间 curTime = Now() Else curTime = CDate(inDay) End If
If Datediff("d",curTime,Cdate("1921-2-8"))>0 Then Exit Function End If
'生成当前公历年、月、日 ==> 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
'生成当前公历星期 ==> sWeekDay curWeekday = Weekday(curTime) sWeekDay = arrWeekName(curWeekday)
'计算到初始时间1921年2月8日的天数: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
'计算农历天干、地支、月、日 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个二进制位的值 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
'生成农历天干、地支==> sChinaYear sChinaYear = "农历"&arrTianGan(((curYear - 4) Mod 60) Mod 10)&arrDiZhi(((curYear - 4) Mod 60) Mod 12)&"年" '生成属相 == > sChinaAni sChinaAni = arrShuXiang(((curYear - 4) Mod 60) Mod 12)
'生成农历月、日 ==> 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 %>
|