VB的农历算法(1900-2090)

前端之家收集整理的这篇文章主要介绍了VB的农历算法(1900-2090)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

从网上找到的VB农历代码收藏备用

      1. OptionExplicit
      1. PublicLunarInfo(1To191)AsDouble'从1900-2090年这150年的农历信息码
      1. 'PublicSolarMonth(1To12)AsInteger'阳历12个月的天数
      1. PublicGan(1To10)AsString'农历的天干
      1. PublicZhi(1To12)AsString'农历的地支
      1. PublicAnimals(1To12)AsString'农历的属象
      1. PublicSolarTerm(1To24)AsString'阳历的节气
      1. PublicsTermInfo(1To24)AsDouble'阳历节气的信息码
      1. PublicnStr1(1To11)AsString'从一到十日
      1. PublicnStr2(1To5)AsString'初十廿卅 '
      1. 'PublicMonthName(1To12)AsString'每个月的英文名称
      1. PublicsFtv(1To17)AsString'阳历的节日
      1. PubliclFtv(1To10)AsString'农历的节日
      1. 'PublicwFtv(1To30)AsString'西方的节日
      1. PublicSubSetValue()
      1. DimiAsInteger
      1. '阳历节日:前四位数字为阳历的MMDD(月日),后面的文字为意义
      1. sFtv(1)="0101元旦"
      1. sFtv(2)="0214情人节"
      1. sFtv(3)="0308妇女节"
      1. sFtv(4)="0312植树节"
      1. sFtv(5)="0315权益日"
      1. sFtv(6)="0401愚人节"
      1. sFtv(7)="0501劳动节"
      1. sFtv(8)="0504青年节"
      1. sFtv(9)="0512护士节"
      1. sFtv(10)="0601儿童节"
      1. sFtv(11)="0701建党节"
      1. sFtv(12)="0801建军节"
      1. sFtv(13)="0808父亲节"
      1. sFtv(14)="0910教师节"
      1. sFtv(15)="1001国庆节"
      1. sFtv(16)="1006老人节"
      1. sFtv(17)="1225圣诞节"
      1. '农历的节日:日期表示的是农历的某月某日
      1. lFtv(1)="0101春节"
      1. lFtv(2)="0115元宵节"
      1. lFtv(3)="0505端午节"
      1. lFtv(4)="0707七夕节"
      1. lFtv(5)="0715中元节"
      1. lFtv(6)="0815中秋节"
      1. lFtv(7)="0909重阳节"
      1. lFtv(8)="1208腊八节"
      1. lFtv(9)="1224小年"
      1. lFtv(10)="0100除夕"
      1. 'wFtv(1)=""
      1. 'wFtv(2)="0231总统日"
      1. 'wFtv(3)="0520母亲节"
      1. 'wFtv(4)=""
      1. 'wFtv(5)="0531胜利日"
      1. 'wFtv(6)="0716合作节"
      1. 'wFtv(7)="0730被奴周"
      1. 'wFtv(8)=""
      1. 'wFtv(9)=""
      1. 'wFtv(10)="1021哥伦布日"
      1. 'wFtv(11)="1144感恩节"
      1. '********************
      1. LunarInfo(1)=&H4BD8
      1. LunarInfo(2)=&H4AE0
      1. LunarInfo(3)=&HA570
      1. LunarInfo(4)=&H54D5
      1. LunarInfo(5)=&HD260
      1. LunarInfo(6)=&HD950
      1. LunarInfo(7)=&H16554
      1. LunarInfo(8)=&H56A0
      1. LunarInfo(9)=&H9AD0
      1. LunarInfo(10)=&H55D2
      1. LunarInfo(11)=&H4AE0
      1. LunarInfo(12)=&HA5B6
      1. LunarInfo(13)=&HA4D0
      1. LunarInfo(14)=&HD250
      1. LunarInfo(15)=&H1D255
      1. LunarInfo(16)=&HB540
      1. LunarInfo(17)=&HD6A0
      1. LunarInfo(18)=&HADA2
      1. LunarInfo(19)=&H95B0
      1. LunarInfo(20)=&H14977
      1. LunarInfo(21)=&H4970
      1. LunarInfo(22)=&HA4B0
      1. LunarInfo(23)=&HB4B5
      1. LunarInfo(24)=&H6A50
      1. LunarInfo(25)=&H6D40
      1. LunarInfo(26)=&H1AB54
      1. LunarInfo(27)=&H2B60
      1. LunarInfo(28)=&H9570
      1. LunarInfo(29)=&H52F2
      1. LunarInfo(30)=&H4970
      1. LunarInfo(31)=&H6566
      1. LunarInfo(32)=&HD4A0
      1. LunarInfo(33)=&HEA50
      1. LunarInfo(34)=&H6E95
      1. LunarInfo(35)=&H5AD0
      1. LunarInfo(36)=&H2B60
      1. LunarInfo(37)=&H186E3
      1. LunarInfo(38)=&H92E0
      1. LunarInfo(39)=&H1C8D7
      1. LunarInfo(40)=&HC950
      1. LunarInfo(41)=&HD4A0
      1. LunarInfo(42)=&H1D8A6
      1. LunarInfo(43)=&HB550
      1. LunarInfo(44)=&H56A0
      1. LunarInfo(45)=&H1A5B4
      1. LunarInfo(46)=&H25D0
      1. LunarInfo(47)=&H92D0
      1. LunarInfo(48)=&HD2B2
      1. LunarInfo(49)=&HA950
      1. LunarInfo(50)=&HB557
      1. LunarInfo(51)=&H6CA0
      1. LunarInfo(52)=&HB550
      1. LunarInfo(53)=&H15355
      1. LunarInfo(54)=&H4DA0
      1. LunarInfo(55)=&HA5D0
      1. LunarInfo(56)=&H14573
      1. LunarInfo(57)=&H52D0
      1. LunarInfo(58)=&HA9A8
      1. LunarInfo(59)=&HE950
      1. LunarInfo(60)=&H6AA0
      1. LunarInfo(61)=&HAEA6
      1. LunarInfo(62)=&HAB50
      1. LunarInfo(63)=&H4B60
      1. LunarInfo(64)=&HAAE4
      1. LunarInfo(65)=&HA570
      1. LunarInfo(66)=&H5260
      1. LunarInfo(67)=&HF263
      1. LunarInfo(68)=&HD950
      1. LunarInfo(69)=&H5B57
      1. LunarInfo(70)=&H56A0
      1. LunarInfo(71)=&H96D0
      1. LunarInfo(72)=&H4DD5
      1. LunarInfo(73)=&H4AD0
      1. LunarInfo(74)=&HA4D0
      1. LunarInfo(75)=&HD4D4
      1. LunarInfo(76)=&HD250
      1. LunarInfo(77)=&HD558
      1. LunarInfo(78)=&HB540
      1. LunarInfo(79)=&HB5A0
      1. LunarInfo(80)=&H195A6
      1. LunarInfo(81)=&H95B0
      1. LunarInfo(82)=&H49B0
      1. LunarInfo(83)=&HA974
      1. LunarInfo(84)=&HA4B0
      1. LunarInfo(85)=&HB27A
      1. LunarInfo(86)=&H6A50
      1. LunarInfo(87)=&H6D40
      1. LunarInfo(88)=&HAF46
      1. LunarInfo(89)=&HAB60
      1. LunarInfo(90)=&H9570
      1. LunarInfo(91)=&H4AF5
      1. LunarInfo(92)=&H4970
      1. LunarInfo(93)=&H64B0
      1. LunarInfo(94)=&H74A3
      1. LunarInfo(95)=&HEA50
      1. LunarInfo(96)=&H6B58
      1. LunarInfo(97)=&H55C0
      1. LunarInfo(98)=&HAB60
      1. LunarInfo(99)=&H96D5
      1. LunarInfo(100)=&H92E0
      1. LunarInfo(101)=&HC960
      1. LunarInfo(102)=&HD954
      1. LunarInfo(103)=&HD4A0
      1. LunarInfo(104)=&HDA50
      1. LunarInfo(105)=&H7552
      1. LunarInfo(106)=&H56A0
      1. LunarInfo(107)=&HABB7
      1. LunarInfo(108)=&H25D0
      1. LunarInfo(109)=&H92D0
      1. LunarInfo(110)=&HCAB5
      1. LunarInfo(111)=&HA950
      1. LunarInfo(112)=&HB4A0
      1. LunarInfo(113)=&HBAA4
      1. LunarInfo(114)=&HAD50
      1. LunarInfo(115)=&H55D9
      1. LunarInfo(116)=&H4BA0
      1. LunarInfo(117)=&HA5B0
      1. LunarInfo(118)=&H15176
      1. LunarInfo(119)=&H52B0
      1. LunarInfo(120)=&HA930
      1. LunarInfo(121)=&H7954
      1. LunarInfo(122)=&H6AA0
      1. LunarInfo(123)=&HAD50
      1. LunarInfo(124)=&H5B52
      1. LunarInfo(125)=&H4B60
      1. LunarInfo(126)=&HA6E6
      1. LunarInfo(127)=&HA4E0
      1. LunarInfo(128)=&HD260
      1. LunarInfo(129)=&HEA65
      1. LunarInfo(130)=&HD530
      1. LunarInfo(131)=&H5AA0
      1. LunarInfo(132)=&H76A3
      1. LunarInfo(133)=&H96D0
      1. LunarInfo(134)=&H4BD7
      1. LunarInfo(135)=&H4AD0
      1. LunarInfo(136)=&HA4D0
      1. LunarInfo(137)=&H1D0B6
      1. LunarInfo(138)=&HD250
      1. LunarInfo(139)=&HD520
      1. LunarInfo(140)=&HDD45
      1. LunarInfo(141)=&HB5A0
      1. LunarInfo(142)=&H56D0
      1. LunarInfo(143)=&H55B2
      1. LunarInfo(144)=&H49B0
      1. LunarInfo(145)=&HA577
      1. LunarInfo(146)=&HA4B0
      1. LunarInfo(147)=&HAA50
      1. LunarInfo(148)=&H1B255
      1. LunarInfo(149)=&H6D20
      1. LunarInfo(150)=&HADA0
      1. LunarInfo(151)=&H14B63
      1. LunarInfo(152)=&H9370
      1. LunarInfo(153)=&H49F8
      1. LunarInfo(154)=&H4970
      1. LunarInfo(155)=&H64B0
      1. LunarInfo(156)=&H168A6
      1. LunarInfo(157)=&HEA50
      1. LunarInfo(158)=&H6B20
      1. LunarInfo(159)=&H1A6C4
      1. LunarInfo(160)=&HAAE0
      1. LunarInfo(161)=&H92E0
      1. LunarInfo(162)=&HD2E3
      1. LunarInfo(163)=&HC960
      1. LunarInfo(164)=&HD557
      1. LunarInfo(165)=&HD4A0
      1. LunarInfo(166)=&HDA50
      1. LunarInfo(167)=&H5D55
      1. LunarInfo(168)=&H56A0
      1. LunarInfo(169)=&HA6D0
      1. LunarInfo(170)=&H55D4
      1. LunarInfo(171)=&H52D0
      1. LunarInfo(172)=&HA9B8
      1. LunarInfo(173)=&HA950
      1. LunarInfo(174)=&HB4A0
      1. LunarInfo(175)=&HB6A6
      1. LunarInfo(176)=&HAD50
      1. LunarInfo(177)=&H55A0
      1. LunarInfo(178)=&HABA4
      1. LunarInfo(179)=&HA5B0
      1. LunarInfo(180)=&H52B0
      1. LunarInfo(181)=&HB273
      1. LunarInfo(182)=&H6930
      1. LunarInfo(183)=&H7337
      1. LunarInfo(184)=&H6A60
      1. LunarInfo(185)=&HAD50
      1. LunarInfo(186)=&H6B55
      1. LunarInfo(187)=&H4B60
      1. LunarInfo(188)=&HA570
      1. LunarInfo(189)=&H54E4
      1. LunarInfo(190)=&HD160
      1. LunarInfo(191)=&HE968
      1. Dims1,s2,s3,s4,s5,s6,s7AsString
      1. s1="甲乙丙丁戊己庚辛壬癸"
      1. s2="子丑寅卯辰巳午未申酉戌亥"
      1. s3="鼠牛虎兔龙蛇马羊猴鸡狗猪"
      1. s4="小寒大寒立春雨水惊蛰春分清明谷雨立夏小满芒种夏至小暑大暑立秋处暑白露秋分寒露霜降立冬小雪大雪冬至"
      1. s5="000000,021208,042467,063836,085337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758"
      1. s6="一二三四五六七八九十日"
      1. s7="初十廿卅 "
      1. Fori=1To24
      1. Ifi<=10ThenGan(i)=Mid(s1,i,1)
      1. Ifi<=12Then
      1. Zhi(i)=Mid(s2,1)
      1. Animals(i)=Mid(s3,1)
      1. EndIf
      1. SolarTerm(i)=Mid(s4,(i-1)*2+1,2)
      1. sTermInfo(i)=Val(Mid(s5,(i-1)*7+1,6))
      1. Ifi<=11ThennStr1(i)=Mid(s6,1)
      1. Ifi<=5ThennStr2(i)=Mid(s7,1)
      1. Nexti
      1. EndSub
      1. '**************************************
      1. '日历系统中的常用处理函数
      1. '**************************************
      1. '传回农历y年m月的总天数
      1. FunctionlMonthDays(ByValYAsInteger,ByValmAsInteger)AsInteger
      1. IfY<1900ThenY=1900
      1. If(LunarInfo(Y-1900+1)AndInt(&H10000/(2^m)))=0Then
      1. lMonthDays=29
      1. Else
      1. lMonthDays=30
      1. EndIf
      1. EndFunction
      1. '传回农历y年闰哪个月1-12,没闰传回0
      1. FunctionLeapMonth(ByValYAsInteger)AsInteger
      1. LeapMonth=0
      1. IfY>=1900ThenLeapMonth=(LunarInfo(Y-1900+1)And&HF)
      1. EndFunction
      1. '传回农历y年闰月的天数
      1. FunctionLeapDays(ByValYAsInteger)AsInteger
      1. DimmAsInteger
      1. DimlAsDouble
      1. m=LeapMonth(Y)
      1. Ifm=0Then
      1. LeapDays=0
      1. Else
      1. l=LunarInfo(Y-1900+1)
      1. Ifl<0Thenl=l*(-1)
      1. l=(lAnd&H10000)
      1. Ifl=0Then
      1. LeapDays=29
      1. Else
      1. LeapDays=30
      1. EndIf
      1. EndIf
      1. EndFunction
      1. '传回农历y年的总天数
      1. FunctionlYearDays(ByValYAsInteger)AsInteger
      1. Dimi,SumAsDouble
      1. Sum=0
      1. Fori=1To12
      1. Sum=Sum+lMonthDays(Y,i)
      1. Nexti
      1. lYearDays=Sum+LeapDays(Y)
      1. EndFunction
      1. '传回阳历y年某m月的天数
      1. 'FunctionSolarDays(ByValYAsInteger,ByValmAsInteger)AsInteger
      1. 'Ifm=2Then
      1. 'If(YMod4=0AndYMod100<>0)Or(YMod400=0)Then
      1. 'SolarDays=29
      1. 'Else
      1. 'SolarDays=28
      1. 'EndIf
      1. 'Else
      1. 'SolarDays=SolarMonth(m)
      1. 'EndIf
      1. 'EndFunction
      1. '根据给定的阳历,返回农历的日期
      1. FunctionGetLunar(ByValSolarDateAsDate)AsString
      1. DimDaysOffsetAsLong
      1. DimiAsInteger
      1. DimTempAsLong
      1. Dimlyear,lmonth,ldayAsInteger
      1. '/////////////////////////////////////////////////
      1. IfSolarDate<=CDate("2000-2-5")Then
      1. DaysOffset=SolarDate-CDate("1900-1-31")
      1. i=1900
      1. DoWhilei<2001AndDaysOffset>=0
      1. Temp=lYearDays(i)
      1. DaysOffset=DaysOffset-Temp
      1. i=i+1
      1. Loop
      1. IfDaysOffset<0Then
      1. DaysOffset=DaysOffset+Temp
      1. i=i-1
      1. EndIf
      1. lyear=i
      1. Else
      1. DaysOffset=SolarDate-CDate("2000-2-5")
      1. i=2000
      1. DoWhilei<2091AndDaysOffset>=0
      1. Temp=lYearDays(i)
      1. DaysOffset=DaysOffset-Temp
      1. i=i+1
      1. Loop
      1. IfDaysOffset<0Then
      1. DaysOffset=DaysOffset+Temp
      1. i=i-1
      1. EndIf
      1. lyear=i
      1. EndIf
      1. '////////////////////////////////////////////////////
      1. DimLeapAsInteger
      1. DimIsLeapAsBoolean
      1. Leap=LeapMonth(i)
      1. IsLeap=False
      1. i=1
      1. DoWhilei<13AndDaysOffset>0
      1. IfLeap>0Andi=(Leap+1)AndIsLeap=FalseThen
      1. i=i-1
      1. IsLeap=True
      1. Temp=LeapDays(lyear)
      1. Else
      1. Temp=lMonthDays(lyear,i)
      1. EndIf
      1. IfIsLeapAndi=(Leap+1)ThenIsLeap=False
      1. DaysOffset=DaysOffset-Temp
      1. i=i+1
      1. Loop
      1. IfDaysOffset=0AndLeap>0Andi=Leap+1Then
      1. IfIsLeapThen
      1. IsLeap=False
      1. Else
      1. IsLeap=True
      1. i=i-1
      1. EndIf
      1. EndIf
      1. IfDaysOffset<0Then
      1. DaysOffset=DaysOffset+Temp
      1. i=i-1
      1. EndIf
      1. lmonth=i
      1. lday=DaysOffset+1
      1. '返回特殊标志的字符串
      1. IfIsLeapThen
      1. GetLunar="1"&Format(lyear,"0000")&Format(lmonth,"00")&Format(lday,"00")
      1. Else
      1. GetLunar="0"&Format(lyear,"00")
      1. EndIf
      1. EndFunction
      1. '将年份用天干地支表示
      1. PublicFunctionGanZhi(ByValsyearAsInteger)AsString
      1. DimstrGan,strZhiAsString
      1. strGan=Gan((syear-1900+6)Mod10+1)
      1. strZhi=Zhi((syear-1900+12)Mod12+1)
      1. GanZhi=strGan+strZhi+"年"
      1. EndFunction
      1. '将月份用农历表示
      1. PublicFunctionCnMonth(ByValsmonthAsInteger)AsString
      1. Ifsmonth<10Then
      1. CnMonth=nStr1(smonth)+"月"
      1. ElseIfsmonth=10Then
      1. CnMonth="十"+"月"
      1. Else
      1. CnMonth="十"+nStr1(smonthMod10)+"月"
      1. EndIf
      1. EndFunction
      1. '将日用农历表示
      1. PublicFunctionCnDay(ByValsdayAsInteger)AsString
      1. Ifsday<=10Then
      1. CnDay="初"+nStr1(sday)
      1. ElseIfsday<20Then
      1. CnDay="十"+nStr1(sdayMod10)
      1. ElseIfsday=20Then
      1. CnDay="廿十"
      1. ElseIfsday<30Then
      1. CnDay="廿"+nStr1(sdayMod10)
      1. Else
      1. CnDay="卅十"
      1. EndIf
      1. EndFunction
      1. '根据年份返回属象
      1. PublicFunctionAnimal(ByValsyearAsInteger)AsString
      1. Animal=Animals((syear-1900)Mod12+1)
      1. EndFunction
      1. '某y年的第n个节气的日期(从1小寒起算)
      1. FunctionsTerm(ByValY,nAsInteger)AsDate
      1. DimD1,D2AsDouble
      1. D1=(31556925.9747*(Y-1900)+sTermInfo(n)*60#)
      1. D2=DateDiff("s","1970-1-10:0","1900-1-62:5")+D1
      1. D1=D2/2
      1. sTerm=DateAdd("s",D2-D1,DateAdd("s",D1,"1970-1-10:0"))
      1. sTerm=Format(sTerm,"yyyy/mm/dd")
      1. EndFunction
      1. '根据阳历返回其节气,若不是则返回空
      1. PublicFunctionGetTerm(ByValsDateAsDate)AsString
      1. DimY,mAsInteger
      1. Y=Year(sDate)
      1. m=Month(sDate)
      1. GetTerm=""
      1. IfsTerm(Y,m*2-1)=sDateThen
      1. GetTerm=SolarTerm(m*2-1)
      1. ElseIfsTerm(Y,m*2)=sDateThen
      1. GetTerm=SolarTerm(m*2)
      1. EndIf
      1. EndFunction
      1. '返回阳历是该月的第几个星期几的字符串,如:0520表示5月份第2个星期日
      1. FunctionGetMonthWeek(ByValsDateAsDate)AsString
      1. DimD0AsDate
      1. D0=CDate(Year(sDate)&"-"&Month(sDate)&"-1")
      1. GetMonthWeek=Format(Month(sDate),"00")&(Int((Day(sDate)-1+Weekday(D0)-1)/7)+1)&Weekday(sDate)-1
      1. EndFunction

    猜你在找的VB相关文章