VB中阳历农历日期转换_vb中阳历农历日期转换

2020-02-28 其他范文 下载本文

VB中阳历农历日期转换由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“vb中阳历农历日期转换”。

函数nlgl获取月日,nly获取年份。

这是本人在用的函数,也是借鉴网上已有的函数,但网上其它版本基本都有个问题:计算有闰月的农历的时候,会不准确,下面的从1970到2011年的均经过一一对比,没有问题。根据阳历日期获得农历,是没问题的,但如果根据农历算阳历,就不好办了:辛卯年冬月廿七是阳历哪天?答:2011-01-01,对也不对,农历按天干地支算,每60年就会重复的;下面参数'IsGetGl为true表示根据农历返回阳历,根据农历返回阳历则valdate必须是阳历的年份加农历的月日,如2010-01-01(2010年的正月初一)对应的阳历是2011-02-03

'******************************阳历、农历转换

Function nlgl(valdate As Date, Optional IsShort As Boolean, Optional IsGetGl As Boolean)

Dim tYear As Integer

Dim tMonth As Integer

Dim tDay As Integer

Dim i As Integer tYear = Year(valdate)tMonth = Month(valdate)tDay = Day(valdate)

On Error Resume Next

Dim daList(1900 To 2100)As String * 18

Dim conDate As Date, setDate As Date

Dim AddMonth As Integer, AddDay As Integer, AddYear As Integer, getDay As Integer

Dim RunYue As Boolean

If tYear > 2100 Or tYear

If tYear

tYear = tYear + 19 * Int((194219 * Int((tYear1

AddDay = AddDay + 29 + Val(Mid(daList(tYear), i, 1))

Next i

setDate = DateAdd(“d”, AddDay1: GoTo CHUSHIHUA

' addday = NearDay

AddDay = 1: AddMonth = 1

For i = 1 To getDay

AddDay = AddDay + 1

If AddDay = 30 + Mid(daList(AddYear), AddMonth, 1)Or(RunYue And AddDay = 30 + Mid(daList(AddYear), 13, 1))Then

If RunYue = False And AddMonth = Val(“&H” & Mid(daList(AddYear), 14, 1))Then

RunYue = True

Else

RunYue = False

AddMonth = AddMonth + 1

End If

AddDay = 1

End If

Next

Dim md$, dd$, mm$

md$ = “初一初二初三初四初五初六初七初八初九初十十一十二十三十四十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十”

dd$ = Mid(md$,(AddDay4)Mod 10)+ 1, 1)

dz = Mid(DiZhi$,((AddYear-4)Mod 12)+ 1, 1)

nly = tg & dz & “年” End Function

《VB中阳历农历日期转换.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
VB中阳历农历日期转换
点击下载文档
相关专题 vb中阳历农历日期转换 阳历 农历 日期 vb中阳历农历日期转换 阳历 农历 日期
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文