《VB计算农历的算法》由会员分享,可在线阅读,更多相关《VB计算农历的算法(6页珍藏版)》请在金锄头文库上搜索。
1、VBVB 计算农历的算法计算农历的算法发表日期:2002-09-13 作者:李立华原创 出处:下面是一个关于 VB 的农历算法 日期数据定义方法如下 前 12 个字节代表 1-12 月为大月或是小月,1 为大月 30 天,0 为小月 29 天第 13 位为闰月的情况,1 为大月 30 天,0 为小月 29 天,第 14 位为闰月的月份,如果不是闰月为 0,否则给出月份,10、11、12 分别用 A、B、C 来表示,即使用 16 进制。最后 4 位为当年家农历新年-即农历 1 月 1 日所在公历的日期,如 0131代表 1 月 31 日。GetYLDate 函数使用方式如下 tYear 为要输入
2、的年,tMonth 为月,tDay 为日期,YLyear 是返回值,返加农历的年份,如甲子年,YLShuXing 返回的是属象,如鼠。IsGetGl 是设置是不是通过农历取公历值,如果是前三个返回相应的公历日期,而且返回值是一个公历日期。Function GetYLDate(tYear As Integer, tMonth As Integer, tDay As Integer,YLyear As String, YLShuXing As String, Optional IsGetGl As Boolean) As String On Error Resume Next Dim daList
3、(1900 To 2011) 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 BooleanIf tYear 2010 Or tYear 1901 Then Exit Function 如果不是有效有日期,退出 1900 to 1909 daList(1900) = “010010110110180131“ daList(1901) = “01001
4、0101110000219“ daList(1902) = “101001010111000208“ daList(1903) = “010100100110150129“ daList(1904) = “110100100110000216“ daList(1905) = “110110010101000204“ daList(1906) = “011010101010140125“ daList(1907) = “010101101010000213“ daList(1908) = “100110101101000202“ daList(1909) = “01001010111012012
5、2“ daList(1910) = “010010101110000210“ daList(1911) = “101001001101160130“ daList(1912) = “101001001101000218“ daList(1913) = “110100100101000206“ daList(1914) = “110101010100150126“ daList(1915) = “101101010101000214“ daList(1916) = “010101101010000204“ daList(1917) = “100101101101020123“ daList(19
6、18) = “100101011011000211“ daList(1919) = “010010011011170201“daList(1920) = “010010011011000220“ daList(1921) = “101001001011000208“ daList(1922) = “101100100101150128“ daList(1923) = “011010100101000216“ daList(1924) = “011011010100000205“ daList(1925) = “101011011010140124“ daList(1926) = “001010
7、110110000213“ daList(1927) = “100101010111000202“ daList(1928) = “010010010111120123“ daList(1929) = “010010010111000210“ daList(1930) = “011001001011060130“ daList(1931) = “110101001010000217“ daList(1932) = “111010100101000206“ daList(1933) = “011011010100150126“ daList(1934) = “010110101101000214
8、“ 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(194
9、3) = “010101101010000205“ daList(1944) = “101010101101140125“ daList(1945) = “001001011101000213“ daList(1946) = “100100101101000202“ daList(1947) = “110010010101120122“ daList(1948) = “101010010101000210“ daList(1949) = “101101001010170129“ daList(1950) = “011011001010000217“ daList(1951) = “101101
10、010101000206“ daList(1952) = “010101011010150127“ daList(1953) = “010011011010000214“ daList(1954) = “101001011011000203“ daList(1955) = “010100101011130124“ daList(1956) = “010100101011000212“ daList(1957) = “101010010101080131“ daList(1958) = “111010010101000218“ daList(1959) = “011010101010000208
11、“ daList(1960) = “101011010101060128“ daList(1961) = “101010110101000215“ daList(1962) = “010010110110000205“daList(1963) = “101001010111040125“ daList(1964) = “101001010111000213“ daList(1965) = “010100100110000202“ daList(1966) = “111010010011030121“ daList(1967) = “110110010101000209“ daList(1968
12、) = “010110101010170130“ daList(1969) = “010101101010000217“ daList(1970) = “100101101101000206“ daList(1971) = “010010101110150127“ daList(1972) = “010010101101000215“ daList(1973) = “101001001101000203“ daList(1974) = “110100100110140123“ daList(1975) = “110100100101000211“ daList(1976) = “1101010
13、10010180131“ daList(1977) = “101101010100000218“ daList(1978) = “101101101010000207“ daList(1979) = “100101101101060128“ daList(1980) = “100101011011000216“ daList(1981) = “010010011011000205“ daList(1982) = “101001001011140125“ daList(1983) = “101001001011000213“ daList(1984) = “1011001001011A0202“
14、 daList(1985) = “011010100101000220“ daList(1986) = “011011010100000209“ daList(1987) = “101011011010060129“ daList(1988) = “101010110110000217“ daList(1989) = “100100110111000206“ daList(1990) = “010010010111150127“ daList(1991) = “010010010111000215“ daList(1992) = “011001001011000204“ daList(1993
15、) = “011010100101030123“ daList(1994) = “111010100101000210“ daList(1995) = “011010110010180131“ daList(1996) = “010110101100000219“ daList(1997) = “101010110110000207“ daList(1998) = “100100110110150128“ daList(1999) = “100100101110000216“ daList(2000) = “110010010110000205“ daList(2001) = “1101010
16、01010140124“ daList(2002) = “110101001010000212“ daList(2003) = “110110100101000201“ daList(2004) = “010110101010120122“ daList(2005) = “010101101010000209“daList(2006) = “101010101101170129“ daList(2007) = “001001011101000218“ daList(2008) = “100100101101000207“ daList(2009) = “110010010101150126“ daList(2010) = “101010010101000214“ daList(2011) = “101101001010000214“ AddYear = tYear RunYue = False If IsGetGl Then AddMonth = Val(Mid(daList(AddYear), 15, 2) AddD