VB 음력 계산 방법

'다음은 VB의 음력 알고리즘입니다

'기본적인 계산 방법을 제공하며, 특정 애플리케이션으로 이를 보완할 수 있습니다

'날짜 데이터 정의 방법은 다음과 같습니다

'처음 12바이트는 1월부터 12월까지가 큰 달인지 작은 달인지를 나타내며, 1은 30일로 구성된 큰 달, 0은 29일로 구성된 작은 달,

p>

'13번째 자리는 윤달입니다. 이 경우 1은 30일인 큰 달, 0은 29일 있는 작은 달, 14번째 자리는 윤달인 경우입니다. 윤달이 아닌 경우 0입니다. 그렇지 않으면 월은 각각 10, 11, 12로 지정됩니다.

'를 표현하려면 A, B, C를 사용합니다. 즉, 16진수를 사용합니다. 마지막 4자리는 해당 연도의 설날입니다. 즉, 그레고리력의 음력 1월 1일을 의미합니다. 예를 들어 0131은 1월 31일을 나타냅니다.

'GetYLDate 함수는 다음과 같이 사용됩니다: tYear는 입력할 연도, tMonth는 월, tDay는

'날짜, YLyear는 반환 값, Jiazi 연도와 같이 연도와 음력이 반환됩니다. YLShuXing 반환

'은 쥐와 같은 코끼리 연도에 속합니다. IsGetGl은 음력을 통해 그레고리력 값을 얻을지 여부를 설정합니다. 그렇다면

'처음 3개는 해당 그레고리력 날짜를 반환하고 반환 값은 그레고리력 날짜입니다.

함수 GetYLDate(tYear를 정수로, tMonth를 정수로, tDay를 정수로, _

YLyear를 문자열로, YLShuXing을 문자열로, _

선택 사항 IsGetGl을 부울로 ) As String

오류 시 다음 재개

Dim daList(1900 To 2011) As String * 18

Dim conDate As Date, setDate As Date

Dim AddMonth를 정수로, AddDay를 정수로, AddYear를 정수로, getDay를 정수로

Dim RunYue As Boolean

tYear > 2010 또는 tYear < 1901이면 함수 종료 ' 유효하지 않고 날짜가 있는 경우 종료

'1900 to 1909

daList(1900) = "010010110110180131"

daList(1901) = " 010010101110000219"

daList(1902) = "101001010111000208"

daList(1903) = "010100100110150129"

daList(1904) = "11010010011000021 6인치

daList(1905) = "110110010101000204"

daList(1906) = "011010101010140125"

daList(1907) = "010101101010000213"

daList (1908) = "100110101101000202"

daList(1909) = "010010101110120122"

daList(1910) = "010010101110000210"

daList(1911) = " 10100100110116013 0"

daList(1912) = "101001001101000218"

daList(1913) = "110100100101000206"

daList(1914) = "1101010101001501 26"

daList(1915) = "101101010101000214"

daList(1916) = "010101101010000204"

daList(1917) = "100101101101020123"

daList(1918) = "100101011011000211"

daList(1919) = "010010011011170201"

daList(1920) = "010010011011000220"

daList(1921) = "10100100101100020

8"

daList(1922) = "101100100101150128"

daList(1923) = "011010100101000216"

daList(1924) = "011011010100000205"

daList(1925) = "101011011010140124"

daList(1926) = "001010110110000213"

daList(1927) = "100101010111000202"

daList (1928) = "010010010111120123"

daList(1929) = "010010010111000210"

daList(1930) = "011001001011060130"

daList(1931) = " 110101001010000217"

daList(1932) = "111010100101000206"

daList(1933) = "011011010100150126"

daList(1934) = "01011010110100021 4"

daList(1935) = "001010110110000204"

daList(1936) = "100100110111030124"

daList(1937) = "100100101110000211"

daList(1938) = "110010010110170131"

daList(1939) = "110010010101000219"

daList(1940) = "110101001010000208"

daList(1941) = " 110110100101060127"

daList(1942) = "101101010101000215"

daList(1943) = "010101101010000205"

daList(1944) = "1010101011011401 2 5"< /p >

daList(1945) = "001001011101000213"

daList(1946) = "100100101101000202"

daList(1947) = "110010010101120122"

daList (1948) = "101010010101000210"

daList(1949) = "101101001010170129"

daList(1950) = "011011001010000217"

daList(1951) = " 101101010101000206"

daList(1952) = "010101011010150127"

daList(1953) = "010011011010000214"

daList(1954) = "101001011011000 20 3"

daList(1955) = "010100101011130124"

p>

daList(1956) = "010100101011000212"

daList(1957) = "101010010101080131"

daList(1958) = "111010010101000218"

daList(1959) = "011010101010000208"

daList(1960) = "101011010101060128"

daList(1961) = "101010110101000215"

daList(1962) = "010010110110000205"

daList(1963) = "101001010111040125"

daList(1964) = "101001010111000213"

daList(1965) = "01010010011000020 2"< / p>

daList(1966) = "111010010011030121"

daList(1967) = "110110010101000209"

daList(1968) = "010110101010170130"

daList(1969) = "010101101010000217"

daList(1970) = "100101101101000206"

daList(1971) = "010010101110150127"

daList(1972) = "010010101101000215"

daList(1973) = "101001001101000203"

daList(1974) = "110100100110140123"

daList(1975) = "1101001001010002 1 1"

daList(1976) = "110101010010180131"

daList(1977) = "101101010100000218"

daList(1978) = "101101101010000207"

daList(1979) = "100101101101060128"

daList(1980) = "100101011011000216"

daList(1981) = "010010011011000205"

daList(1982 ) = "101001001011140125"

daList(1983) = "101001001011000213"

daList(1984) = "1011001001011A0202"

daList(1985) = "01101010010100 022 0 "

daList(1986) = "011011010100000209"

daList(1987) = "101011011010060129"

daList(1988) = "101010110110000217"

daList(1989) = "100100110111000206"

> daList(1990) = "010010010111150127"

daList(1991) = "010010010111000215"

daList(1992) = "011001001011000204"

daList(1993) = "011010100101030123"

daList(1994) = "111010100101000210"

daList(1995) = "011010110010180131"

daList(1996) = "0101101011000002 19"

daList(1997) = "101010110110000207"

daList(1998) = "100100110110150128"

daList(1999) = "100100101110000216"

daList(2000) = "110010010110000205"

daList(2001) = "110101001010140124"

daList(2002) = "110101001010000212"

daList(2003 ) = "110110100101000201"

daList(2004) = "010110101010120122"

daList(2005) = "010101101010000209"

daList(2006) = "10101010110117 01 29 "

daList(2007) = "001001011101000218"

daList(2008) = "100100101101000207"

daList(2009) = "110010010101150126"

daList(2010) = "101010010101000214"

daList(2011) = "101101001010000214"

AddYear = tYear

RunYue = False

IsGetGl이면

AddMonth = Val(Mid(daList(AddYear), 15, 2))

AddDay = Val(Mid(daList(AddYear), 17, 2 ))

conDate = DateSerial(AddYear, AddMonth, AddDay)

AddDay = tDay

For i = 1 To tMonth - 1

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

다음 i

'MsgBox DateDiff("d", conDate, Date)< /p >

setDate = DateAdd("d", AddDay - 1, conDate)

GetYLDate = setDate

tYear = Year(setDate)

p>

tMonth = 월(setDate)

tDay = Day(setDate)

종료 기능

End If

CHUSHIHUA :

AddMonth = Val(Mid(daList(AddYear), 15, 2))

AddDay = Val(Mid(daList(AddYear), 17, 2))

conDate = DateSerial(AddYear, AddMonth, AddDay)

setDate = DateSerial(tYear, tMonth, tDay)

getDay = DateDiff("d", conDate, setDate)

If getDay < 0 그러면 AddYear = AddYear - 1: 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)) 그러면

If RunYue = False And AddMonth = Val("&H" & Mid(daList(AddYear), 14, 1)) 그러면

RunYue = True

Else

RunYue = False

AddMonth = AddMonth + 1

End If

AddDay = 1

End If

Next

md$ = "1학년, 2학년, 3학년, 4학년, 5학년, 6학년 학년, 7학년, 8학년 9일 열한번째 이십사십오십육일 열일곱 열여덟 열아홉 스물한 스물둘 스물셋 스물넷 스물다섯 스물여섯 스물일곱 스물여덟 스물아홉 서른"

dd$ = Mid(md$, (AddDay - 1) * 2 + 1, 2)

mm$ = Mid("양수 2 3 4 5 6 7 8 90 차가운 왁스 ", AddMonth , 1) + "월"

YouGetDate = DateSerial(AddYear, AddMonth, AddDay)

tiangan$ = "A, B, C, D, Wu, Geng, Xin, Rengui"

dizhi $ = "Zichou Yin Mao Chen Siwu Wu Shen Youxu Hai"

Dim ganzhi(0 To 59) As String * 2

i = 0에서 59까지

ganzhi(i) = Mid(tiangan$, (i Mod 10) + 1, 1) + Mid(dizhi$, (i Mod 12) + 1, 1)

'ff$ = ff$ + ganzhi(i)

다음 i

'MsgBox ff$, , Len(ff$)

<

p> YLyear = ganzhi((AddYear - 4) Mod 60)

shu$ = "쥐, 소, 호랑이, 토끼, 용, 뱀, 말, 양, 원숭이, 닭, 개, 돼지"

YLShuXing = Mid(shu$ , ((AddYear - 4) Mod 12) + 1, 1)

RunYue라면 mm$ = "Leap" + mm$

GetYLDate = mm$ + dd$

End Function

'다음은 폼에 버튼을 추가하고 이름을 Command1로 지정해야 합니다. 그런 다음 다음 코드를

Private Sub Command1_Click()

Dim ty As Integer, tm As Integer, td As Integer, yl As String, sx As String 형식의 코드에 복사합니다.

'그레고리력 1999 가져오기 음력 2019년 10월 28일

ty = 1999

tm = 10

td = 28

t = GetYLDate(ty , tm, td, yl, sx)

MsgBox t

MsgBox ty & "-" & tm & "-" & td & " " & yl & " " & sx

'1999년 10월 28일의 그레고리력 날짜를 가져옵니다.

t = GetYLDate(ty, tm, td, yl, sx , True)

MsgBox t

MsgBox ty & "-" & tm & "-" & td & " " & yl & " " & sx

하위 끝

上篇: TCL 테크놀로지는 매각된 계열사인 마오지아 인터내셔널의 지분 100%를 현금 28억 위안에 인수할 계획이다. 下篇: 메탈 기어 솔리드 2를 스위치로 사용할 수 있나요?
관련 내용