DBMNG数据库管理与应用

抓住自己最有兴趣的东西,由浅入深,循序渐进地学……
当前位置:首页 > 服务器配置 > IIS&ASP

ASP农历日期及干支的获取

001<%'@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
002<%'Response.CodePage="65001"%> 
003<%'Response.Charset="UTF-8" %>
004<%
005'Option Explicit
006'***********************************************
007' 类名称:ChinaDay
008' 用途:
009'  根据输入的日期计算该日期的农历天干地支及当年属相
010' 使用方法:
011' 第一个参数为输入参数,不填写默认为当日,
012' 只计算1921-2-8之后的日期
013'***********************************************
014'Dim objChinaDay
015'Dim sDay, sWeekDay, sChinaDay, sChinaYear,sChinaAni
016'Set objChinaDay = New  ChinaDay
017'Call objChinaDay.Action("",sDay,sWeekDay,sChinaYear,sChinaDay,sChinaAni)
018'Response.Write sDay&"<BR>"
019'Response.Write sWeekDay&"<BR>"
020'Response.Write sChinaYear&"<BR>"
021'Response.Write sChinaDay&"<BR>"
022'Response.Write sChinaAni&"<BR>"
023''***********************************
024'set aa=new ChinaDay
025'inDay=cdate("2008-10-9")
026'call aa.Action(inDay,sDay1,sWeekDay1,sChinaYear1,sChinaDay1,sChinaAni1)
027'response.write sDay1&"<br>"
028'response.write sWeekDay1&"<br>"
029'response.write sChinaYear1&"<br>"
030'response.write sChinaDay1&"<br>"
031'response.write sChinaAni1&"<br>"
032'response.write sDay1
033 
034set aa=nothing
035 
036Class ChinaDay
037 Dim arrWeekName(7), MonthAdd(11), NongliData(99)
038 Dim arrTianGan(9), arrDiZhi(11), arrShuXiang(11), arrDayName(30), arrMonName(12)
039 Dim curTime, curYear, curMonth, curDay, curWeekday
040 Dim i, m, n, k, isEnd, bit, TheDate
041  
042 '初始化数据
043 Sub Class_Initialize()
044  '---------------------------------------------------
045  '定义显示字串
046  
047  '星期名
048  arrWeekName(0) = "*"
049  arrWeekName(1) = "星期日"
050  arrWeekName(2) = "星期一"
051  arrWeekName(3) = "星期二"
052  arrWeekName(4) = "星期三"
053  arrWeekName(5) = "星期四"
054  arrWeekName(6) = "星期五"
055  arrWeekName(7) = "星期六"
056  
057  '天干名称
058  arrTianGan(0) = "甲"
059  arrTianGan(1) = "乙"
060  arrTianGan(2) = "丙"
061  arrTianGan(3) = "丁"
062  arrTianGan(4) = "戊"
063  arrTianGan(5) = "己"
064  arrTianGan(6) = "庚"
065  arrTianGan(7) = "辛"
066  arrTianGan(8) = "壬"
067  arrTianGan(9) = "癸"
068  
069  '地支名称
070  arrDiZhi(0) = "子"
071  arrDiZhi(1) = "丑"
072  arrDiZhi(2) = "寅"
073  arrDiZhi(3) = "卯"
074  arrDiZhi(4) = "辰"
075  arrDiZhi(5) = "巳"
076  arrDiZhi(6) = "午"
077  arrDiZhi(7) = "未"
078  arrDiZhi(8) = "申"
079  arrDiZhi(9) = "酉"
080  arrDiZhi(10) = "戌"
081  arrDiZhi(11) = "亥"
082  
083  '属相名称
084  arrShuXiang(0) = "鼠"
085  arrShuXiang(1) = "牛"
086  arrShuXiang(2) = "虎"
087  arrShuXiang(3) = "兔"
088  arrShuXiang(4) = "龙"
089  arrShuXiang(5) = "蛇"
090  arrShuXiang(6) = "马"
091  arrShuXiang(7) = "羊"
092  arrShuXiang(8) = "猴"
093  arrShuXiang(9) = "鸡"
094  arrShuXiang(10) = "狗"
095  arrShuXiang(11) = "猪"
096  
097  '农历日期名
098  arrDayName(0) = "*"
099  arrDayName(1) = "初一"
100  arrDayName(2) = "初二"
101  arrDayName(3) = "初三"
102  arrDayName(4) = "初四"
103  arrDayName(5) = "初五"
104  arrDayName(6) = "初六"
105  arrDayName(7) = "初七"
106  arrDayName(8) = "初八"
107  arrDayName(9) = "初九"
108  arrDayName(10) = "初十"
109  arrDayName(11) = "十一"
110  arrDayName(12) = "十二"
111  arrDayName(13) = "十三"
112  arrDayName(14) = "十四"
113  arrDayName(15) = "十五"
114  arrDayName(16) = "十六"
115  arrDayName(17) = "十七"
116  arrDayName(18) = "十八"
117  arrDayName(19) = "十九"
118  arrDayName(20) = "二十"
119  arrDayName(21) = "廿一"
120  arrDayName(22) = "廿二"
121  arrDayName(23) = "廿三"
122  arrDayName(24) = "廿四"
123  arrDayName(25) = "廿五"
124  arrDayName(26) = "廿六"
125  arrDayName(27) = "廿七"
126  arrDayName(28) = "廿八"
127  arrDayName(29) = "廿九"
128  arrDayName(30) = "三十"
129  
130  '农历月份名
131  arrMonName(0) = "*"
132  arrMonName(1) = "正"
133  arrMonName(2) = "二"
134  arrMonName(3) = "三"
135  arrMonName(4) = "四"
136  arrMonName(5) = "五"
137  arrMonName(6) = "六"
138  arrMonName(7) = "七"
139  arrMonName(8) = "八"
140  arrMonName(9) = "九"
141  arrMonName(10) = "十"
142  arrMonName(11) = "十一"
143  arrMonName(12) = "腊"
144  
145  '---------------------------------------------------------
146  '公差数据定义
147  
148  '公历每月前面的天数
149  MonthAdd(0) = 0
150  MonthAdd(1) = 31
151  MonthAdd(2) = 59
152  MonthAdd(3) = 90
153  MonthAdd(4) = 120
154  MonthAdd(5) = 151
155  MonthAdd(6) = 181
156  MonthAdd(7) = 212
157  MonthAdd(8) = 243
158  MonthAdd(9) = 273
159  MonthAdd(10) = 304
160  MonthAdd(11) = 334
161  
162  '农历数据
163  NongliData(0) = 2635
164  NongliData(1) = 333387
165  NongliData(2) = 1701
166  NongliData(3) = 1748
167  NongliData(4) = 267701
168  NongliData(5) = 694
169  NongliData(6) = 2391
170  NongliData(7) = 133423
171  NongliData(8) = 1175
172  NongliData(9) = 396438
173  NongliData(10) = 3402
174  NongliData(11) = 3749
175  NongliData(12) = 331177
176  NongliData(13) = 1453
177  NongliData(14) = 694
178  NongliData(15) = 201326
179  NongliData(16) = 2350
180  NongliData(17) = 465197
181  NongliData(18) = 3221
182  NongliData(19) = 3402
183  NongliData(20) = 400202
184  NongliData(21) = 2901
185  NongliData(22) = 1386
186  NongliData(23) = 267611
187  NongliData(24) = 605
188  NongliData(25) = 2349
189  NongliData(26) = 137515
190  NongliData(27) = 2709
191  NongliData(28) = 464533
192  NongliData(29) = 1738
193  NongliData(30) = 2901
194  NongliData(31) = 330421
195  NongliData(32) = 1242
196  NongliData(33) = 2651
197  NongliData(34) = 199255
198  NongliData(35) = 1323
199  NongliData(36) = 529706
200  NongliData(37) = 3733
201  NongliData(38) = 1706
202  NongliData(39) = 398762
203  NongliData(40) = 2741
204  NongliData(41) = 1206
205  NongliData(42) = 267438
206  NongliData(43) = 2647
207  NongliData(44) = 1318
208  NongliData(45) = 204070
209  NongliData(46) = 3477
210  NongliData(47) = 461653
211  NongliData(48) = 1386
212  NongliData(49) = 2413
213  NongliData(50) = 330077
214  NongliData(51) = 1197
215  NongliData(52) = 2637
216  NongliData(53) = 268877
217  NongliData(54) = 3365
218  NongliData(55) = 531109
219  NongliData(56) = 2900
220  NongliData(57) = 2922
221  NongliData(58) = 398042
222  NongliData(59) = 2395
223  NongliData(60) = 1179
224  NongliData(61) = 267415
225  NongliData(62) = 2635
226  NongliData(63) = 661067
227  NongliData(64) = 1701
228  NongliData(65) = 1748
229  NongliData(66) = 398772
230  NongliData(67) = 2742
231  NongliData(68) = 2391
232  NongliData(69) = 330031
233  NongliData(70) = 1175
234  NongliData(71) = 1611
235  NongliData(72) = 200010
236  NongliData(73) = 3749
237  NongliData(74) = 527717
238  NongliData(75) = 1452
239  NongliData(76) = 2742
240  NongliData(77) = 332397
241  NongliData(78) = 2350
242  NongliData(79) = 3222
243  NongliData(80) = 268949
244  NongliData(81) = 3402
245  NongliData(82) = 3493
246  NongliData(83) = 133973
247  NongliData(84) = 1386
248  NongliData(85) = 464219
249  NongliData(86) = 605
250  NongliData(87) = 2349
251  NongliData(88) = 334123
252  NongliData(89) = 2709
253  NongliData(90) = 2890
254  NongliData(91) = 267946
255  NongliData(92) = 2773
256  NongliData(93) = 592565
257  NongliData(94) = 1210
258  NongliData(95) = 2651
259  NongliData(96) = 395863
260  NongliData(97) = 1323
261  NongliData(98) = 2707
262  NongliData(99) = 265877
263 End Sub
264  
265 '############################################################
266 '主要方法 Action
267 ' inDay 输入日期,如果不输入则默认为当前日期
268 ' sDay 中文格式日期
269 ' sWeekDay 周几
270 ' sChinaYear 农历年
271 ' sChinaDay 农历日
272 ' sChinaAni 属相
273 '############################################################
274 Public Function Action(inDay,sDay,sWeekDay,sChinaYear,sChinaDay,sChinaAni)
275  
276  '转换要转换的日期
277  If inDay="" Or Not IsDate(inDay) Then
278   '获取当前系统时间
279   curTime = Now()
280  Else
281   curTime = CDate(inDay)
282  End If
283  
284  If Datediff("d",curTime,Cdate("1921-2-8"))>0 Then
285   Exit Function
286  End If
287  
288  '生成当前公历年、月、日 ==> sDay
289  curYear = Year(curTime)
290  curMonth = Month(curTime)
291  curDay = Day(curTime)
292  
293  sDay = curYear&"年"
294  If (curMonth < 10) Then
295   sDay = sDay&"0"&curMonth&"月"
296  Else
297   sDay = sDay&curMonth&"月"
298  End If
299  If (curDay < 10) Then
300   sDay = sDay&"0"&curDay&"日"
301  Else
302   sDay = sDay&curDay&"日"
303  End If
304  
305  '生成当前公历星期 ==> sWeekDay
306  curWeekday = Weekday(curTime)
307  sWeekDay = arrWeekName(curWeekday)
308  
309  '计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)
310  TheDate = (curYear - 1921) * 365 + Int((curYear - 1921) / 4) + curDay + MonthAdd(curMonth - 1) - 38
311  If ((curYear Mod 4) = 0 AND curMonth > 2) Then
312   TheDate = TheDate + 1
313  End If
314  
315  '计算农历天干、地支、月、日
316  isEnd = 0
317  m = 0
318  '------------------------------------
319  Do
320   If (NongliData(m) < 4095) Then
321    k = 11
322   Else
323    k = 12
324   End if
325   
326   n = k
327   '------------------------------------
328   Do
329    If (n < 0) Then
330     Exit Do
331    End If
332    
333    '获取NongliData(m)的第n个二进制位的值
334    bit = NongliData(m)
335    For i = 1 To n Step 1
336     bit = Int(bit / 2)
337    Next
338    bit = bit Mod 2
339    
340    If (TheDate <= 29 + bit) Then
341     isEnd = 1
342     Exit Do
343    End If
344    
345    TheDate = TheDate - 29 - bit
346    
347    n = n - 1
348   Loop
349   '------------------------------------
350   If (isEnd = 1) Then
351    Exit Do
352   End If
353   
354   m = m + 1
355  Loop
356  '------------------------------------
357  
358  curYear = 1921 + m
359  curMonth = k - n + 1
360  curDay = TheDate
361  
362  If (k = 12) Then
363   If (curMonth = (Int(NongliData(m) / 65536) + 1)) Then
364    curMonth = 1 - curMonth
365   ElseIf (curMonth > (Int(NongliData(m) / 65536) + 1)) Then
366    curMonth = curMonth - 1
367   End if
368  End If
369  
370  '生成农历天干、地支==> sChinaYear
371  sChinaYear = "农历"&arrTianGan(((curYear - 4) Mod 60) Mod 10)&arrDiZhi(((curYear - 4) Mod 60) Mod 12)&"年"
372  '生成属相 == > sChinaAni
373  sChinaAni = arrShuXiang(((curYear - 4) Mod 60) Mod 12)
374  
375  '生成农历月、日 ==> NongliDayStr
376  If (curMonth < 1) Then
377   sChinaDay = "闰"&arrMonName(-1 * curMonth)
378  Else
379   sChinaDay = arrMonName(curMonth)
380  End If
381  sChinaDay = sChinaDay&"月"
382  
383  sChinaDay = sChinaDay & arrDayName(curDay)
384 End Function
385End Class
386 
387Dim objChinaDay
388Dim sDay, sWeekDay, sChinaDay, sChinaYear,sChinaAni
389Set objChinaDay = New  ChinaDay
390Call objChinaDay.Action("",sDay,sWeekDay,sChinaYear,sChinaDay,sChinaAni)
391Response.Write sDay&"&nbsp;"
392Response.Write sWeekDay&"&nbsp;"
393Response.Write sChinaYear&""
394Response.Write sChinaAni&"&nbsp;"
395Response.Write sChinaDay&"&nbsp;"
396%>
本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2025 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号