VB计算农历的算法[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 thinkeasy 的 blog

'下面是一个关于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为要输入的年,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(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 boolean
    if tyear > 2010 or tyear < 1901 then exit function '如果不是有效有日期,退出
    '1900 to 1909
    dalist(1900) = "010010110110180131"
    dalist(1901) = "010010101110000219"
    dalist(1902) = "101001010111000208"
    dalist(1903) = "010100100110150129"
    dalist(1904) = "110100100110000216"
    dalist(1905) = "110110010101000204"
    dalist(1906) = "011010101010140125"
    dalist(1907) = "010101101010000213"
    dalist(1908) = "100110101101000202"
    dalist(1909) = "010010101110120122"
    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(1918) = "100101011011000211"
    dalist(1919) = "010010011011170201"
    dalist(1920) = "010010011011000220"
    dalist(1921) = "101001001011000208"
    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) = "010110101101000214"
    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) = "101010101101140125"
    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) = "101001011011000203"
    dalist(1955) = "010100101011130124"
    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"

本文关键:VB计算农历的算
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top