我宝宝2012年3月1日10:55出生,女宝宝,请哪位大师帮忙测一下宝宝八字,谢谢

2024-05-16 03:57

1. 我宝宝2012年3月1日10:55出生,女宝宝,请哪位大师帮忙测一下宝宝八字,谢谢

宝宝八字是:壬辰   壬寅   辛酉  癸巳
五行不缺。

我宝宝2012年3月1日10:55出生,女宝宝,请哪位大师帮忙测一下宝宝八字,谢谢

2. 手动制作日历

可以参考一下下面的代码,可能写的不是太好,控制台应用程序。如果想做成控件,可以把下面的部分代码修改一下放到你的自定义控件里试试

using System;
namespace CNCalendar
{
    public class CNDate
    {
        private const ushort START_YEAR = 1901;
        private const ushort END_YEAR = 2050;
        private string[] ConstellationName = 
  { 
  "白羊座", "金牛座", "双子座", 
  "巨蟹座", "狮子座", "处女座", 
  "天秤座", "天蝎座", "射手座", 
  "摩羯座", "水瓶座", "双鱼座"};
        private string[] LunarHolDayName = 
  { 
  "小寒", "大寒", "立春", "雨水", 
  "惊蛰", "春分", "清明", "谷雨", 
  "立夏", "小满", "芒种", "夏至", 
  "小暑", "大暑", "立秋", "处暑", 
  "白露", "秋分", "寒露", "霜降", 
  "立冬", "小雪", "大雪", "冬至"};

        //数组gLunarDay存入阴历1901年到2100年每年中的月天数信息, 
        //阴历每月只能是29或30天,一年用12(或13)个二进制位表示,对应位为1表30天,否则为29天 
        private int[] gLunarMonthDay = { 
  //测试数据只有1901.1.1 --2050.12.31 
  0x4ae0, 0xa570, 0x5268, 0xd260, 0xd950, 0x6aa8, 0x56a0, 0x9ad0, 0x4ae8, 0x4ae0, //1910 
  0xa4d8, 0xa4d0, 0xd250, 0xd548, 0xb550, 0x56a0, 0x96d0, 0x95b0, 0x49b8, 0x49b0, //1920 
  0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada8, 0x2b60, 0x9570, 0x4978, 0x4970, 0x64b0, //1930 
  0xd4a0, 0xea50, 0x6d48, 0x5ad0, 0x2b60, 0x9370, 0x92e0, 0xc968, 0xc950, 0xd4a0, //1940 
  0xda50, 0xb550, 0x56a0, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, 0xb4a8, 0x6ca0, //1950 
  0xb550, 0x55a8, 0x4da0, 0xa5b0, 0x52b8, 0x52b0, 0xa950, 0xe950, 0x6aa0, 0xad50, //1960 
  0xab50, 0x4b60, 0xa570, 0xa570, 0x5260, 0xe930, 0xd950, 0x5aa8, 0x56a0, 0x96d0, //1970 
  0x4ae8, 0x4ad0, 0xa4d0, 0xd268, 0xd250, 0xd528, 0xb540, 0xb6a0, 0x96d0, 0x95b0, //1980 
  0x49b0, 0xa4b8, 0xa4b0, 0xb258, 0x6a50, 0x6d40, 0xada0, 0xab60, 0x9370, 0x4978, //1990 
  0x4970, 0x64b0, 0x6a50, 0xea50, 0x6b28, 0x5ac0, 0xab60, 0x9368, 0x92e0, 0xc960, //2000 
  0xd4a8, 0xd4a0, 0xda50, 0x5aa8, 0x56a0, 0xaad8, 0x25d0, 0x92d0, 0xc958, 0xa950, //2010 
  0xb4a0, 0xb550, 0xb550, 0x55a8, 0x4ba0, 0xa5b0, 0x52b8, 0x52b0, 0xa930, 0x74a8, //2020 
  0x6aa0, 0xad50, 0x4da8, 0x4b60, 0x9570, 0xa4e0, 0xd260, 0xe930, 0xd530, 0x5aa0, //2030 
  0x6b50, 0x96d0, 0x4ae8, 0x4ad0, 0xa4d0, 0xd258, 0xd250, 0xd520, 0xdaa0, 0xb5a0, //2040 
  0x56d0, 0x4ad8, 0x49b0, 0xa4b8, 0xa4b0, 0xaa50, 0xb528, 0x6d20, 0xada0, 0x55b0}; //2050 
        //数组gLanarMonth存放阴历1901年到2050年闰月的月份,如没有则为0,每字节存两年 
        byte[] gLunarMonth ={ 
  0x00, 0x50, 0x04, 0x00, 0x20, //1910 
  0x60, 0x05, 0x00, 0x20, 0x70, //1920 
  0x05, 0x00, 0x40, 0x02, 0x06, //1930 
  0x00, 0x50, 0x03, 0x07, 0x00, //1940
  0x60, 0x04, 0x00, 0x20, 0x70, //1950 
  0x05, 0x00, 0x30, 0x80, 0x06, //1960 
  0x00, 0x40, 0x03, 0x07, 0x00, //1970 
  0x50, 0x04, 0x08, 0x00, 0x60, //1980 
  0x04, 0x0a, 0x00, 0x60, 0x05, //1990 
  0x00, 0x30, 0x80, 0x05, 0x00, //2000 
  0x40, 0x02, 0x07, 0x00, 0x50, //2010 
  0x04, 0x09, 0x00, 0x60, 0x04, //2020 
  0x00, 0x20, 0x60, 0x05, 0x00, //2030 
  0x30, 0xb0, 0x06, 0x00, 0x50, //2040 
  0x02, 0x07, 0x00, 0x50, 0x03}; //2050 
        //数组gLanarHoliDay存放每年的二十四节气对应的阳历日期 
        //每年的二十四节气对应的阳历日期几乎固定,平均分布于十二个月中 
        // 1月 2月 3月 4月 5月 6月 
        //小寒 大寒 立春 雨水 惊蛰 春分 清明 谷雨 立夏 小满 芒种 夏至 
        // 7月 8月 9月 10月 11月 12月 
        //小暑 大暑 立秋 处暑 白露 秋分 寒露 霜降 立冬 小雪 大雪 冬至 
        //**********************************
        // 节气无任何确定规律,所以只好存表,要节省空间,所以.... 
        //**********************************} 
        //数据格式说明: 
        //如1901年的节气为 
        // 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 
        // 6, 21, 4, 19, 6, 21, 5, 21, 6,22, 6,22, 8, 23, 8, 24, 8, 24, 8, 24, 8, 23, 8, 22 
        // 9, 6, 11,4, 9, 6, 10,6, 9,7, 9,7, 7, 8, 7, 9, 7, 9, 7, 9, 7, 8, 7, 15 
        //上面第一行数据为每月节气对应日期,15减去每月第一个节气,每月第二个节气减去15得第二行 
        // 这样每月两个节气对应数据都小于16,每月用一个字节存放,高位存放第一个节气数据,低位存放 
        //第二个节气的数据,可得下表 
        byte[] gLunarHolDay ={ 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1901 
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x87, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1902 
  0x96, 0xA5, 0x87, 0x96, 0x87, 0x87, 0x79, 0x69, 0x69, 0x69, 0x78, 0x78, //1903 
  0x86, 0xA5, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x78, 0x87, //1904 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1905 
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1906 
  0x96, 0xA5, 0x87, 0x96, 0x87, 0x87, 0x79, 0x69, 0x69, 0x69, 0x78, 0x78, //1907 
  0x86, 0xA5, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1908 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1909 
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1910 
  0x96, 0xA5, 0x87, 0x96, 0x87, 0x87, 0x79, 0x69, 0x69, 0x69, 0x78, 0x78, //1911 
  0x86, 0xA5, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1912 
  0x95, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1913 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1914 
  0x96, 0xA5, 0x97, 0x96, 0x97, 0x87, 0x79, 0x79, 0x69, 0x69, 0x78, 0x78, //1915 
  0x96, 0xA5, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1916 
  0x95, 0xB4, 0x96, 0xA6, 0x96, 0x97, 0x78, 0x79, 0x78, 0x69, 0x78, 0x87, //1917 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x77, //1918 
  0x96, 0xA5, 0x97, 0x96, 0x97, 0x87, 0x79, 0x79, 0x69, 0x69, 0x78, 0x78, //1919 
  0x96, 0xA5, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1920 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x78, 0x79, 0x78, 0x69, 0x78, 0x87, //1921 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x77, //1922 
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x87, 0x79, 0x79, 0x69, 0x69, 0x78, 0x78, //1923 
  0x96, 0xA5, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1924 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x78, 0x79, 0x78, 0x69, 0x78, 0x87, //1925 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1926
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x87, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1927 
  0x96, 0xA5, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1928 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1929 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1930 
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x87, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1931 
  0x96, 0xA5, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1932 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1933 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1934 
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1935 
  0x96, 0xA5, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1936 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1937 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1938 
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1939 
  0x96, 0xA5, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1940 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1941 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1942 
  0x96, 0xA4, 0x96, 0x96, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1943 
  0x96, 0xA5, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1944 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1945 
  0x95, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x78, 0x69, 0x78, 0x77, //1946 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1947 
  0x96, 0xA5, 0xA6, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //1948 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x79, 0x78, 0x79, 0x77, 0x87, //1949 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x78, 0x79, 0x78, 0x69, 0x78, 0x77, //1950 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x79, 0x79, 0x79, 0x69, 0x78, 0x78, //1951 
  0x96, 0xA5, 0xA6, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //1952 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1953 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x78, 0x79, 0x78, 0x68, 0x78, 0x87, //1954 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1955 
  0x96, 0xA5, 0xA5, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //1956 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1957 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1958 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1959 
  0x96, 0xA4, 0xA5, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //1960 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1961 
  0x96, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1962 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1963 
  0x96, 0xA4, 0xA5, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //1964 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1965 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1966 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1967 
  0x96, 0xA4, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //1968 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1969 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1970 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x79, 0x69, 0x78, 0x77, //1971 
  0x96, 0xA4, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //1972 
  0xA5, 0xB5, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1973 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1974 
  0x96, 0xB4, 0x96, 0xA6, 0x97, 0x97, 0x78, 0x79, 0x78, 0x69, 0x78, 0x77, //1975 
  0x96, 0xA4, 0xA5, 0xB5, 0xA6, 0xA6, 0x88, 0x89, 0x88, 0x78, 0x87, 0x87, //1976 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //1977 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x78, 0x87, //1978 
  0x96, 0xB4, 0x96, 0xA6, 0x96, 0x97, 0x78, 0x79, 0x78, 0x69, 0x78, 0x77, //1979 
  0x96, 0xA4, 0xA5, 0xB5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //1980 
  0xA5, 0xB4, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x77, 0x87, //1981 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1982
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x78, 0x79, 0x78, 0x69, 0x78, 0x77, //1983 
  0x96, 0xB4, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x87, //1984 
  0xA5, 0xB4, 0xA6, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //1985 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1986 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x79, 0x78, 0x69, 0x78, 0x87, //1987 
  0x96, 0xB4, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //1988 
  0xA5, 0xB4, 0xA5, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //1989 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //1990 
  0x95, 0xB4, 0x96, 0xA5, 0x86, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1991 
  0x96, 0xB4, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //1992 
  0xA5, 0xB3, 0xA5, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //1993 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1994 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x76, 0x78, 0x69, 0x78, 0x87, //1995 
  0x96, 0xB4, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //1996 
  0xA5, 0xB3, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //1997 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //1998 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //1999 
  0x96, 0xB4, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //2000 
  0xA5, 0xB3, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //2001 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //2002 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //2003 
  0x96, 0xB4, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //2004 
  0xA5, 0xB3, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //2005 
  0xA5, 0xB4, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //2006
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x69, 0x78, 0x87, //2007 
  0x96, 0xB4, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x87, 0x78, 0x87, 0x86, //2008
  0xA5, 0xB3, 0xA5, 0xB5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //2009 
  0xA5, 0xB4, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //2010 
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x78, 0x87, //2011 
  0x96, 0xB4, 0xA5, 0xB5, 0xA5, 0xA6, 0x87, 0x88, 0x87, 0x78, 0x87, 0x86, //2012 
  0xA5, 0xB3, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x87, //2013 
  0xA5, 0xB4, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //2014
  0x95, 0xB4, 0x96, 0xA5, 0x96, 0x97, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //2015 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA6, 0x87, 0x88, 0x87, 0x78, 0x87, 0x86, //2016 
  0xA5, 0xC3, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x87, //2017 
  0xA5, 0xB4, 0xA6, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //2018 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //2019 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA6, 0x97, 0x87, 0x87, 0x78, 0x87, 0x86, //2020 
  0xA5, 0xC3, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //2021 
  0xA5, 0xB4, 0xA5, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //2022 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x79, 0x77, 0x87, //2023 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA6, 0x97, 0x87, 0x87, 0x78, 0x87, 0x96, //2024 
  0xA5, 0xC3, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //2025 
  0xA5, 0xB3, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //2026
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //2027 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA6, 0x97, 0x87, 0x87, 0x78, 0x87, 0x96, //2028 
  0xA5, 0xC3, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //2029 
  0xA5, 0xB3, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //2030 
  0xA5, 0xB4, 0x96, 0xA5, 0x96, 0x96, 0x88, 0x78, 0x78, 0x78, 0x87, 0x87, //2031 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA6, 0x97, 0x87, 0x87, 0x78, 0x87, 0x96, //2032 
  0xA5, 0xC3, 0xA5, 0xB5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x86, //2033 
  0xA5, 0xB3, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x78, 0x88, 0x78, 0x87, 0x87, //2034 
  0xA5, 0xB4, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //2035 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA6, 0x97, 0x87, 0x87, 0x78, 0x87, 0x96, //2036 
  0xA5, 0xC3, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x86, //2037 
  0xA5, 0xB3, 0xA5, 0xA5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //2038
  0xA5, 0xB4, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //2039 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA6, 0x97, 0x87, 0x87, 0x78, 0x87, 0x96, //2040 
  0xA5, 0xC3, 0xA5, 0xB5, 0xA5, 0xA6, 0x87, 0x88, 0x87, 0x78, 0x87, 0x86, //2041 
  0xA5, 0xB3, 0xA5, 0xB5, 0xA6, 0xA6, 0x88, 0x88, 0x88, 0x78, 0x87, 0x87, //2042 
  0xA5, 0xB4, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //2043 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA6, 0x97, 0x87, 0x87, 0x88, 0x87, 0x96, //2044 
  0xA5, 0xC3, 0xA5, 0xB4, 0xA5, 0xA6, 0x87, 0x88, 0x87, 0x78, 0x87, 0x86, //2045 
  0xA5, 0xB3, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x88, 0x78, 0x87, 0x87, //2046 
  0xA5, 0xB4, 0x96, 0xA5, 0xA6, 0x96, 0x88, 0x88, 0x78, 0x78, 0x87, 0x87, //2047 
  0x95, 0xB4, 0xA5, 0xB4, 0xA5, 0xA5, 0x97, 0x87, 0x87, 0x88, 0x86, 0x96, //2048 
  0xA4, 0xC3, 0xA5, 0xA5, 0xA5, 0xA6, 0x97, 0x87, 0x87, 0x78, 0x87, 0x86, //2049 
  0xA5, 0xC3, 0xA5, 0xB5, 0xA6, 0xA6, 0x87, 0x88, 0x78, 0x78, 0x87, 0x87}; //2050

        private DateTime m_Date;
        public DateTime Date
        {
            get { return m_Date; }
            set { m_Date = value; }
        }

        public CNDate()
        {
            Date = DateTime.Today;
        }
        public CNDate(DateTime dt)
        {
            Date = dt.Date;
        }
        //计算指定日期的星座序号 
        public int GetConstellation()
        {
            int Y, M, D;
            Y = m_Date.Year;
            M = m_Date.Month;
            D = m_Date.Day;
            Y = M * 100 + D;
            if (((Y >= 321) && (Y <= 419))) { return 0; }
            else if ((Y >= 420) && (Y <= 520)) { return 1; }
            else if ((Y >= 521) && (Y <= 620)) { return 2; }
            else if ((Y >= 621) && (Y <= 722)) { return 3; }
            else if ((Y >= 723) && (Y <= 822)) { return 4; }
            else if ((Y >= 823) && (Y <= 922)) { return 5; }
            else if ((Y >= 923) && (Y <= 1022)) { return 6; }
            else if ((Y >= 1023) && (Y <= 1121)) { return 7; }
            else if ((Y >= 1122) && (Y <= 1221)) { return 8; }
            else if ((Y >= 1222) || (Y <= 119)) { return 9; }
            else if ((Y >= 120) && (Y <= 218)) { return 10; }
            else if ((Y >= 219) && (Y <= 320)) { return 11; }
            else { return -1; };
        }

        //计算指定日期的星座名称 
        public string GetConstellationName()
        {
            int Constellation;
            Constellation = GetConstellation();
            if ((Constellation >= 0) && (Constellation <= 11))
            { return ConstellationName[Constellation]; }
            else
            { return ""; };
        }

        //计算公历当天对应的节气 0-23,-1表示不是节气 
        public int l_GetLunarHolDay()
        {
            byte Flag;
            int Day, iYear, iMonth, iDay;
            iYear = m_Date.Year;
            if ((iYear  END_YEAR))
            { return -1; };
            iMonth = m_Date.Month;
            iDay = m_Date.Day;
            Flag = gLunarHolDay[(iYear - START_YEAR) * 12 + iMonth - 1];
            if (iDay < 15)
            { Day = 15 - ((Flag >> 4) & 0x0f); }
            else
            { Day = (Flag & 0x0f) + 15; };
            if (iDay == Day)
            {
                if (iDay > 15)
                { return (iMonth - 1) * 2 + 1; }
                else
                { return (iMonth - 1) * 2; }
            }
            else
            { return -1; };
        }

        public string FormatMonth(ushort iMonth, bool bLunar)
        {
            string szText = "正二三四五六七八九十";
            string strMonth;
            if ((!bLunar) && (iMonth == 1))
            { return "一月"; }
            if (iMonth <= 10)
            {
                strMonth = "";
                strMonth = strMonth + szText.Substring(iMonth - 1, 1);
                strMonth = strMonth + "月";
                return strMonth;
            }
            if (iMonth == 11)
            { strMonth = "十一"; }
            else
            { strMonth = "十二"; }
            return strMonth + "

3. 请大师帮我算一卦 因为本人是闰月出生的人,所以很多时候都算不准,本人是87年 闰六月二十一 申时出生的

申时出生的人  一生都很艰难啊   你要有准备哦

请大师帮我算一卦  因为本人是闰月出生的人,所以很多时候都算不准,本人是87年 闰六月二十一  申时出生的

4. 实现阳历转阴历算法

下面是一个关于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日。

Function GetChgDate(ByVal vDate As String, ByVal ChgType As 转换方式) As String

Dim vvdate() As String = Split(vDate, "-")


If vvdate(0) > 2011 Or vvdate(0) < 1900 Then

Throw New NotSupportedException("本函数只提供1900年至2011年的日历转换!")

End If


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

Dim RunYue As Boolean

Dim conDate As DateTime


Dim daList(2011) As String

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"

daList(1965) = "010100100110000202"

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) = "110100100101000211"

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) = "011010100101000220"

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) = "010110101100000219"

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) = "101010101101170129"

daList(2007) = "001001011101000218"

daList(2008) = "100100101101000207"

daList(2009) = "110010010101150126"

daList(2010) = "101010010101000214"

daList(2011) = "101101001010000214"

AddYear = vvdate(0)


If ChgType = 转换方式.阴历转阳历 Then

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

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

conDate = DateSerial(AddYear, AddMonth, AddDay)

AddDay = vvdate(2)

For i = 1 To vvdate(1) - 1

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

Next i

Return DateAdd(DateInterval.Day, AddDay - 1, conDate)

Else

CHUSHIHUA:

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

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

conDate = DateSerial(AddYear, AddMonth, AddDay)

Dim vtDate As DateTime

Try

vtDate = CType(vDate, DateTime)

Catch ex As Exception

Throw New NotSupportedException("阳历日期输入错误!")

End Try


getDay = DateDiff(DateInterval.Day, conDate, vtDate)

If getDay < 0 Then AddYear = AddYear - 1 : GoTo CHUSHIHUA

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

Return AddYear & "-" & AddMonth & "-" & AddDay

End If


End Function


Enum 转换方式

阴历转阳历 = 1

阳历转阴历 = 0

End Enum

5. 你好,能把这个程序的图给我吗?谢谢啦

//C51写的公历转农历和星期 
#define uchar unsigned char 
#define uint unsigned int 
#include  
/* 
公历年对应的农历数据,每年三字节, 
格式第一字节BIT7-4 位表示闰月月份,值为0 为无闰月,BIT3-0 对应农历第1-4 月的大小 
第二字节BIT7-0 对应农历第5-12 月大小,第三字节BIT7 表示农历第13 个月大小 
月份对应的位为1 表示本农历月大(30 天),为0 表示小(29 天) 
第三字节BIT6-5 表示春节的公历月份,BIT4-0 表示春节的公历日期 
*/ 
code uchar year_code[597] = { 
0x04,0xAe,0x53, //1901 0 
0x0A,0x57,0x48, //1902 3 
0x55,0x26,0xBd, //1903 6 
0x0d,0x26,0x50, //1904 9 
0x0d,0x95,0x44, //1905 12 
0x46,0xAA,0xB9, //1906 15 
0x05,0x6A,0x4d, //1907 18 
0x09,0xAd,0x42, //1908 21 
0x24,0xAe,0xB6, //1909 
0x04,0xAe,0x4A, //1910 
0x6A,0x4d,0xBe, //1911 
0x0A,0x4d,0x52, //1912 
0x0d,0x25,0x46, //1913 
0x5d,0x52,0xBA, //1914 
0x0B,0x54,0x4e, //1915 
0x0d,0x6A,0x43, //1916 
0x29,0x6d,0x37, //1917 
0x09,0x5B,0x4B, //1918 
0x74,0x9B,0xC1, //1919 
0x04,0x97,0x54, //1920 
0x0A,0x4B,0x48, //1921 
0x5B,0x25,0xBC, //1922 
0x06,0xA5,0x50, //1923 
0x06,0xd4,0x45, //1924 
0x4A,0xdA,0xB8, //1925 
0x02,0xB6,0x4d, //1926 
0x09,0x57,0x42, //1927 
0x24,0x97,0xB7, //1928 
0x04,0x97,0x4A, //1929 
0x66,0x4B,0x3e, //1930 
0x0d,0x4A,0x51, //1931 
0x0e,0xA5,0x46, //1932 
0x56,0xd4,0xBA, //1933 
0x05,0xAd,0x4e, //1934 
0x02,0xB6,0x44, //1935 
0x39,0x37,0x38, //1936 
0x09,0x2e,0x4B, //1937 
0x7C,0x96,0xBf, //1938 
0x0C,0x95,0x53, //1939 
0x0d,0x4A,0x48, //1940 
0x6d,0xA5,0x3B, //1941 
0x0B,0x55,0x4f, //1942 
0x05,0x6A,0x45, //1943 
0x4A,0xAd,0xB9, //1944 
0x02,0x5d,0x4d, //1945 
0x09,0x2d,0x42, //1946 
0x2C,0x95,0xB6, //1947 
0x0A,0x95,0x4A, //1948 
0x7B,0x4A,0xBd, //1949 
0x06,0xCA,0x51, //1950 
0x0B,0x55,0x46, //1951 
0x55,0x5A,0xBB, //1952 
0x04,0xdA,0x4e, //1953 
0x0A,0x5B,0x43, //1954 
0x35,0x2B,0xB8, //1955 
0x05,0x2B,0x4C, //1956 
0x8A,0x95,0x3f, //1957 
0x0e,0x95,0x52, //1958 
0x06,0xAA,0x48, //1959 
0x7A,0xd5,0x3C, //1960 
0x0A,0xB5,0x4f, //1961 
0x04,0xB6,0x45, //1962 
0x4A,0x57,0x39, //1963 
0x0A,0x57,0x4d, //1964 
0x05,0x26,0x42, //1965 
0x3e,0x93,0x35, //1966 
0x0d,0x95,0x49, //1967 
0x75,0xAA,0xBe, //1968 
0x05,0x6A,0x51, //1969 
0x09,0x6d,0x46, //1970 
0x54,0xAe,0xBB, //1971 
0x04,0xAd,0x4f, //1972 
0x0A,0x4d,0x43, //1973 
0x4d,0x26,0xB7, //1974 
0x0d,0x25,0x4B, //1975 
0x8d,0x52,0xBf, //1976 
0x0B,0x54,0x52, //1977 
0x0B,0x6A,0x47, //1978 
0x69,0x6d,0x3C, //1979 
0x09,0x5B,0x50, //1980 
0x04,0x9B,0x45, //1981 
0x4A,0x4B,0xB9, //1982 
0x0A,0x4B,0x4d, //1983 
0xAB,0x25,0xC2, //1984 
0x06,0xA5,0x54, //1985 
0x06,0xd4,0x49, //1986 
0x6A,0xdA,0x3d, //1987 
0x0A,0xB6,0x51, //1988 
0x09,0x37,0x46, //1989 
0x54,0x97,0xBB, //1990 
0x04,0x97,0x4f, //1991 
0x06,0x4B,0x44, //1992 
0x36,0xA5,0x37, //1993 
0x0e,0xA5,0x4A, //1994 
0x86,0xB2,0xBf, //1995 
0x05,0xAC,0x53, //1996 
0x0A,0xB6,0x47, //1997 
0x59,0x36,0xBC, //1998 
0x09,0x2e,0x50, //1999 294 
0x0C,0x96,0x45, //2000 297 
0x4d,0x4A,0xB8, //2001 
0x0d,0x4A,0x4C, //2002 
0x0d,0xA5,0x41, //2003 
0x25,0xAA,0xB6, //2004 
0x05,0x6A,0x49, //2005 
0x7A,0xAd,0xBd, //2006 
0x02,0x5d,0x52, //2007 
0x09,0x2d,0x47, //2008 
0x5C,0x95,0xBA, //2009 
0x0A,0x95,0x4e, //2010 
0x0B,0x4A,0x43, //2011 
0x4B,0x55,0x37, //2012 
0x0A,0xd5,0x4A, //2013 
0x95,0x5A,0xBf, //2014 
0x04,0xBA,0x53, //2015 
0x0A,0x5B,0x48, //2016 
0x65,0x2B,0xBC, //2017 
0x05,0x2B,0x50, //2018 
0x0A,0x93,0x45, //2019 
0x47,0x4A,0xB9, //2020 
0x06,0xAA,0x4C, //2021 
0x0A,0xd5,0x41, //2022 
0x24,0xdA,0xB6, //2023 
0x04,0xB6,0x4A, //2024 
0x69,0x57,0x3d, //2025 
0x0A,0x4e,0x51, //2026 
0x0d,0x26,0x46, //2027 
0x5e,0x93,0x3A, //2028 
0x0d,0x53,0x4d, //2029 
0x05,0xAA,0x43, //2030 
0x36,0xB5,0x37, //2031 
0x09,0x6d,0x4B, //2032 
0xB4,0xAe,0xBf, //2033 
0x04,0xAd,0x53, //2034 
0x0A,0x4d,0x48, //2035 
0x6d,0x25,0xBC, //2036 
0x0d,0x25,0x4f, //2037 
0x0d,0x52,0x44, //2038 
0x5d,0xAA,0x38, //2039 
0x0B,0x5A,0x4C, //2040 
0x05,0x6d,0x41, //2041 
0x24,0xAd,0xB6, //2042 
0x04,0x9B,0x4A, //2043 
0x7A,0x4B,0xBe, //2044 
0x0A,0x4B,0x51, //2045 
0x0A,0xA5,0x46, //2046 
0x5B,0x52,0xBA, //2047 
0x06,0xd2,0x4e, //2048 
0x0A,0xdA,0x42, //2049 
0x35,0x5B,0x37, //2050 
0x09,0x37,0x4B, //2051 
0x84,0x97,0xC1, //2052 
0x04,0x97,0x53, //2053 
0x06,0x4B,0x48, //2054 
0x66,0xA5,0x3C, //2055 
0x0e,0xA5,0x4f, //2056 
0x06,0xB2,0x44, //2057 
0x4A,0xB6,0x38, //2058 
0x0A,0xAe,0x4C, //2059 
0x09,0x2e,0x42, //2060 
0x3C,0x97,0x35, //2061 
0x0C,0x96,0x49, //2062 
0x7d,0x4A,0xBd, //2063 
0x0d,0x4A,0x51, //2064 
0x0d,0xA5,0x45, //2065 
0x55,0xAA,0xBA, //2066 
0x05,0x6A,0x4e, //2067 
0x0A,0x6d,0x43, //2068 
0x45,0x2e,0xB7, //2069 
0x05,0x2d,0x4B, //2070 
0x8A,0x95,0xBf, //2071 
0x0A,0x95,0x53, //2072 
0x0B,0x4A,0x47, //2073 
0x6B,0x55,0x3B, //2074 
0x0A,0xd5,0x4f, //2075 
0x05,0x5A,0x45, //2076 
0x4A,0x5d,0x38, //2077 
0x0A,0x5B,0x4C, //2078 
0x05,0x2B,0x42, //2079 
0x3A,0x93,0xB6, //2080 
0x06,0x93,0x49, //2081 
0x77,0x29,0xBd, //2082 
0x06,0xAA,0x51, //2083 
0x0A,0xd5,0x46, //2084 
0x54,0xdA,0xBA, //2085 
0x04,0xB6,0x4e, //2086 
0x0A,0x57,0x43, //2087 
0x45,0x27,0x38, //2088 
0x0d,0x26,0x4A, //2089 
0x8e,0x93,0x3e, //2090 
0x0d,0x52,0x52, //2091 
0x0d,0xAA,0x47, //2092 
0x66,0xB5,0x3B, //2093 
0x05,0x6d,0x4f, //2094 
0x04,0xAe,0x45, //2095 
0x4A,0x4e,0xB9, //2096 
0x0A,0x4d,0x4C, //2097 
0x0d,0x15,0x41, //2098 
0x2d,0x92,0xB5, //2099 
}; 
///月份数据表 
code uchar day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3}; 
code uint day_code2[3]={0x111,0x130,0x14e}; 
/* 
函数功能:输入BCD阳历数据,输出BCD阴历数据(只允许1901-2099年) 
调用函数示例:Conversion(c_sun,year_sun,month_sun,day_sun) 
如:计算2004年10月16日Conversion(0,0x4,0x10,0x16); 
c_sun,year_sun,month_sun,day_sun均为BCD数据,c_sun为世纪标志位,c_sun=0为21世 
纪,c_sun=1为19世纪 
调用函数后,原有数据不变,读c_moon,year_moon,month_moon,day_moon得出阴历BCD数据 
*/ 
bit c_moon; 
data uchar year_moon,month_moon,day_moon,week; 
/*子函数,用于读取数据表中农历月的大月或小月,如果该月为大返回1,为小返回0*/ 
bit get_moon_day(uchar month_p,uint table_addr) 
{ 
uchar temp; 
switch (month_p) 
{ 
case 1:{temp=year_code[table_addr]&0x08; 
if (temp==0)return(0);else return(1);} 
case 2:{temp=year_code[table_addr]&0x04; 
if (temp==0)return(0);else return(1);} 
case 3:{temp=year_code[table_addr]&0x02; 
if (temp==0)return(0);else return(1);} 
case 4:{temp=year_code[table_addr]&0x01; 
if (temp==0)return(0);else return(1);} 
case 5:{temp=year_code[table_addr+1]&0x80; 
if (temp==0) return(0);else return(1);} 
case 6:{temp=year_code[table_addr+1]&0x40; 
if (temp==0)return(0);else return(1);} 
case 7:{temp=year_code[table_addr+1]&0x20; 
if (temp==0)return(0);else return(1);} 
case 8:{temp=year_code[table_addr+1]&0x10; 
if (temp==0)return(0);else return(1);} 
case 9:{temp=year_code[table_addr+1]&0x08; 
if (temp==0)return(0);else return(1);} 
case 10:{temp=year_code[table_addr+1]&0x04; 
if (temp==0)return(0);else return(1);} 
case 11:{temp=year_code[table_addr+1]&0x02; 
if (temp==0)return(0);else return(1);} 
case 12:{temp=year_code[table_addr+1]&0x01; 
if (temp==0)return(0);else return(1);} 
case 13:{temp=year_code[table_addr+2]&0x80; 
if (temp==0)return(0);else return(1);} 
} 
} 
/* 
函数功能:输入BCD阳历数据,输出BCD阴历数据(只允许1901-2099年) 
调用函数示例:Conversion(c_sun,year_sun,month_sun,day_sun) 
如:计算2004年10月16日Conversion(0,0x4,0x10,0x16); 
c_sun,year_sun,month_sun,day_sun均为BCD数据,c_sun为世纪标志位,c_sun=0为21世 
纪,c_sun=1为19世纪 
调用函数后,原有数据不变,读c_moon,year_moon,month_moon,day_moon得出阴历BCD数据 
*/ 
void Conversion(bit c,uchar year,uchar month,uchar day) 
{ //c=0 为21世纪,c=1 为19世纪 输入输出数据均为BCD数据 
uchar temp1,temp2,temp3,month_p; 
uint temp4,table_addr; 
bit flag2,flag_y; 
temp1=year/16; //BCD->hex 先把数据转换为十六进制 
temp2=year%16; 
year=temp1*10+temp2; 
temp1=month/16; 
temp2=month%16; 
month=temp1*10+temp2; 
temp1=day/16; 
temp2=day%16; 
day=temp1*10+temp2; 
//定位数据表地址 
if(c==0) 
{ 
table_addr=(year+0x64-1)*0x3; 
} 
else 
{ 
table_addr=(year-1)*0x3; 
} 
//定位数据表地址完成 
//取当年春节所在的公历月份 
temp1=year_code[table_addr+2]&0x60; 
temp1=_cror_(temp1,5); 
//取当年春节所在的公历月份完成 
//取当年春节所在的公历日 
temp2=year_code[table_addr+2]&0x1f; 
//取当年春节所在的公历日完成 
// 计算当年春年离当年元旦的天数,春节只会在公历1月或2月 
if(temp1==0x1) 
{ 
temp3=temp2-1; 
} 
else 
{ 
temp3=temp2+0x1f-1; 
} 
// 计算当年春年离当年元旦的天数完成 
//计算公历日离当年元旦的天数,为了减少运算,用了两个表 
//day_code1[9],day_code2[3] 
//如果公历月在九月或前,天数会少于0xff,用表day_code1[9], 
//在九月后,天数大于0xff,用表day_code2[3] 
//如输入公历日为8月10日,则公历日离元旦天数为day_code1[8-1]+10-1 
//如输入公历日为11月10日,则公历日离元旦天数为day_code2[11-10]+10-1 
if (month<10) 
{ 
temp4=day_code1[month-1]+day-1; 
} 
else 
{ 
temp4=day_code2[month-10]+day-1; 
} 
if ((month>0x2)&&(year%0x4==0)) 
{ //如果公历月大于2月并且该年的2月为闰月,天数加1 
temp4+=1; 
} 
//计算公历日离当年元旦的天数完成 
//判断公历日在春节前还是春节后 
if (temp4>=temp3) 
{ //公历日在春节后或就是春节当日使用下面代码进行运算 
temp4-=temp3; 
month=0x1; 
month_p=0x1; //month_p为月份指向,公历日在春节前或就是春节当日month_p指向首月 
flag2=get_moon_day(month_p,table_addr); 
//检查该农历月为大小还是小月,大月返回1,小月返回0 
flag_y=0; 
if(flag2==0)temp1=0x1d; //小月29天 
else temp1=0x1e; //大小30天 
temp2=year_code[table_addr]&0xf0; 
temp2=_cror_(temp2,4); //从数据表中取该年的闰月月份,如为0则该年无闰月 
while(temp4>=temp1) 
{ 
temp4-=temp1; 
month_p+=1; 
if(month==temp2) 
{ 
flag_y=~flag_y; 
if(flag_y==0) 
month+=1; 
} 
else month+=1; 
flag2=get_moon_day(month_p,table_addr); 
if(flag2==0)temp1=0x1d; 
else temp1=0x1e; 
} 
day=temp4+1; 
} 
else 
{ //公历日在春节前使用下面代码进行运算 
temp3-=temp4; 
if (year==0x0) 
{ 
year=0x63;c=1; 
} 
else year-=1; 
table_addr-=0x3; 
month=0xc; 
temp2=year_code[table_addr]&0xf0; 
temp2=_cror_(temp2,4); 
if (temp2==0) 
month_p=0xc; 
else 
month_p=0xd; // 
/*month_p为月份指向,如果当年有闰月,一年有十三个月,月指向13,无闰月指向12*/ 
flag_y=0; 
flag2=get_moon_day(month_p,table_addr); 
if(flag2==0)temp1=0x1d; 
else temp1=0x1e; 
while(temp3>temp1) 
{ 
temp3-=temp1; 
month_p-=1; 
if(flag_y==0)month-=1; 
if(month==temp2)flag_y=~flag_y; 
flag2=get_moon_day(month_p,table_addr); 
if(flag2==0)temp1=0x1d; 
else temp1=0x1e; 
} 
day=temp1-temp3+1; 
} 
c_moon=c; //HEX->BCD ,运算结束后,把数据转换为BCD数据 
temp1=year/10; 
temp1=_crol_(temp1,4); 
temp2=year%10; 
year_moon=temp1|temp2; 
temp1=month/10; 
temp1=_crol_(temp1,4); 
temp2=month%10; 
month_moon=temp1|temp2; 
temp1=day/10; 
temp1=_crol_(temp1,4); 
temp2=day%10; 
day_moon=temp1|temp2; 
} 
/*函数功能:输入BCD阳历数据,输出BCD星期数据(只允许1901-2099年) 
调用函数示例:Conver_week(c_sun,year_sun,month_sun,day_sun) 
如:计算2004年10月16日Conversion(0,0x4,0x10,0x16); 
c_sun,year_sun,month_sun,day_sun均为BCD数据,c_sun为世纪标志位,c_sun=0为21世 
纪,c_sun=1为19世纪 
调用函数后,原有数据不变,读week得出阴历BCD数据 
*/ 
code uchar table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; //月修正数据表 
/* 
算法:日期+年份+所过闰年数+月较正数之和除7 的余数就是星期但如果是在 
闰年又不到3 月份上述之和要减一天再除7 
星期数为0 
*/ 
void Conver_week(bit c,uchar year,uchar month,uchar day) 
{//c=0 为21世纪,c=1 为19世纪 输入输出数据均为BCD数据 
uchar temp1,temp2; 
temp1=year/16; //BCD->hex 先把数据转换为十六进制 
temp2=year%16; 
year=temp1*10+temp2; 
temp1=month/16; 
temp2=month%16; 
month=temp1*10+temp2; 
temp1=day/16; 
temp2=day%16; 
day=temp1*10+temp2; 
if (c==0){year+=0x64;} //如果为21世纪,年份数加100 
temp1=year/0x4; //所过闰年数只算1900年之后的 
temp2=year+temp1; 
temp2=temp2%0x7; //为节省资源,先进行一次取余,避免数大于0xff,避免使用整型数据 
temp2=temp2+day+table_week[month-1]; 
if (year%0x4==0&&month<3)temp2-=1; 
week=temp2%0x7; 
} 
//test 
uchar c_sun,year_sun,month_sun,day_sun; 
void main() 
{ 
c_sun=1; 
year_sun=0x2; 
month_sun=0x11; 
day_sun=0x3; 
Conver_week(c_sun,year_sun,month_sun,day_sun); 
Conversion(c_sun,year_sun,month_sun,day_sun); 
while(1); 
}

你好,能把这个程序的图给我吗?谢谢啦

6. 农历的历法是什么?

农历:以华历为基础,融合阳历成分而成的一种历法

7. 为何今年农历2月没30?

每个月都含有2个节气,古代劳动人民把前个节气(立春、惊蛰、清明、立夏、芒种、小暑、立秋、白露、寒露、立冬、大雪、小寒)称”节气”;而后个节气(雨水、春分、谷雨、小满、夏至、大暑、处暑、秋分、霜降、小雪、冬至、大寒)称为“中气”。农历闰月如何安置呢?我国历史上曾有过不同处理方法,西汉把闰月放在一年末尾,汉朝初把闰月放在九月之后称“后九月”。汉朝以后把不含中气的月份,定为农历前个月的闰月,这种置闰规则一直延用至今。 

为什么会有农历月份没有中气的呢?原来两个中气之间平均为365.2422÷12=30.4368日,则30或31天。地球绕太阳运动的轨道是椭圆,在近日点(春分、秋分)运动慢,两个节气间距时间最多可长31.45日。而农历的一个朔望月平均只有29.5306日,农历小月29天,大月30天。这样便出现这样的情况:有的月份(一般是小月)开始时上个中气已经过去,结束时下个中气还没来。譬如,2001(辛已年)小满是5月21日(农历四月二十九),下一农历月份初一是5月23日已经错过小满,可是这个农历月结束在6月20日,而夏至是6月21日,那么这个农历月便没有“中气”,又在农历四月之后,便称闰四月。今年春分是3月20日(农历二月三十),下个农历月初一是3月21日,结束于4月18日,第三天4月20日是谷雨。这样,今年农历二月后面这个不含“中气”的月份定为闰二月。根据这样的置闰规则,2006年闰7月、2009年闰5月、2012年闰4月、2014年闰9月、2017年闰6月、2020年闰4月。 

至于阴历哪一个月,这就牵涉到了节气了。说一年有二十四节气,只是一种传统的说法,往细方面说,应该说一年有十二个节气和十二个中气。这十二个中气,哪个中气属于哪个月,是有规定的:雨水是正月的中气;春分是二月的中气;谷雨是三月的中气;小满是四月的中气;夏至是五月的中气;大暑是六月的中气;处暑是七月的中气;秋分是八月的中气;霜降是九月的中气;小雪是十月的中气;冬至是十一月的中气;大寒是十二月的中气。 

至于十二个节气在哪几个月里,那就不一定。又阴历的一个月平均是29天半多一点,可是从一个中气到下一个中气的间隔却平均是30天半少一点。这样中气在阴历的月份里要逐月推迟1天光景,到一定的时间,中气就不在月中而移到了一个月的末尾,如果挨着的第二个月又是小月,很可能这个月就没有中气,因为下一个中气移到第三个月的月初去了。中间的这个没有中气的月份,就算是上个月的闰月。举个1998年的例子:阳历6月21日是阴历五月二十七日,这一天是夏至(五月中气);而阳历7月23日是阴历六月初一,这一天是大暑(六月中气),从阳历6月24日到7月22日的这个阴历里面(阴历五月完了以后的一个月)只有一个节气小暑,没有中气,这个月就算是闰五月。所以阴历闰哪一个月,是按一定规则由人定出来的,并不神秘。 

中国旧历农历纪年中,有闰月的一年称为闰年。一般年份为12个月,354或355天,闰年则为13个月,383或384天。农历作为阴阳历的一种,每月的天数依照月亏而定,一年的时间以12个月为基准;为了合上地球围绕太阳运行周期即回归年,每隔2到4年,增加一个月,增加的这个月为闰月,因此农历的闰年为13个月。 

农历没有第十三月的称谓,闰月按照历法规则,排放在从二月到十月的过后重复同一个月,重复的这个月为闰月,如四月过后的闰月称为闰四月。 

农历闰年闰月的推算,3年一闰,5年二闰,19年七闰;农历基本上19年为一周期对应于公历同一时间。如公历的2001年5月27日、1982年5月27日和1963年5月27日这个日子,都是闰四月初五。 

闰月加到哪个月,以农历历法规则推断,主要依照与农历的二十四节气相符合来确定; 
农历的闰月天数与正常月份天数一样,为29或30天。 

农历所谓“闰”的说法,只有闰年和闰月称谓,公历也有闰年的称谓。 
公历1982年至2042年与农历闰年闰月对照表 

公历所在月份 闰月(初一日) 干支年 
1982年5月23日 闰四月小 壬戊年 
1984年11月23日 闰十月大 甲子年 
1987年7月26日 闰六月大 丁卯年 
1990年6月23日 闰五月大 庚午年 
1993年4月22日 闰三月大 癸酉年 
1995年9月25日 闰八月大 乙亥年 
1998年6月24日 闰五月小 戊寅年 
2001年5月23日 闰四月大 辛巳年 
2004年3月21日 闰二月大 甲申年 
2006年8月24日 闰七月大 丙戊年

2009年6月23日 闰五月大 己丑年 
2012年5月21日 闰四月小 壬辰年 
2014年10月24日 闰九月小 甲午年 
2017年7月23日 闰六月大 丁酉年 
2020年5月23日 闰四月小 庚子年 
2023年3月22日 闰二月大 癸卯年 
2025年7月25日 闰六月大 己巳年 
2028年6月23日 闰五月大 戊申年 
2031年4月22日 闰三月大 辛亥年 
2033年8月25日 闰七月大 癸丑年 
2036年7月23日 闰六月小 丙辰年 
公历所在月份 闰月(初一日) 干支年 
2039年6月22日 闰五月大 己未年 
2042年3月22日 闰二月大 壬戊年 


闰年的计算方法:被4整除而不能被100整除或被400整除为闰年 


一百二十年阳历/干支/五行/生肖对照表
第一循环开始 第一循环结束 第二循环开始 第二循环结束 干支 五行 生肖 
1900年 1月31日 1901年 2月18日 1960年 1月28日 1961年 2月14日 庚子 金 鼠 
1901年 2月19日 1902年 2月7日 1961年 2月15日 1962年 2月4日 辛丑 金 牛 
1902年 2月8日 1903年 1月28日 1962年 2月5日 1963年 1月24日 壬寅 水 虎 
1903年 1月29日 1904年 2月15日 1963年 1月25日 1964年 2月12日 癸卯 水 兔 
1904年 2月16日 1905年 2月3日 1964年 2月13日 1965年 2月1日 甲辰 木 龙 
1905年 2月4日 1906年 1月24日 1965年 2月2日 1966年 1月20日 乙巳 木 蛇 
1906年 1月25日 1907年 2月12日 1966年 1月21日 1967年 2月8日 丙午 火 马 
1907年 2月13日 1908年 2月1日 1967年 2月9日 1968年 1月29日 丁未 火 羊 
1908年 2月2日 1909年 1月21日 1968年 1月30日 1969年 2月26日 戊申 土 猴 
1909年 1月22日 1910年 2月9日 1969年 2月27日 1970年 2月5日 己酉 土 鸡 
1910年 2月10日 1911年 1月29日 1970年 2月6日 1971年 1月26日 庚戌 金 狗 
1911年 1月30日 1912年 2月17日 1971年 1月27日 1972年 2月14日 辛亥 金 猪 
1912年 2月18日 1913年 2月5日 1972年 2月15日 1973年 2月2日 壬子 水 鼠 
1913年 2月6日 1914年 1月25日 1973年 2月3日 1974年 1月22日 癸丑 水 牛 
1914年 1月26日 1915年 2月13日 1974年 1月23日 1975年 2月10日 甲寅 木 虎 
1915年 2月14日 1916年 2月2日 1975年 2月11日 1976年 1月30日 乙卯 木 兔 
1916年 2月3日 1917年 1月22日 1976年 1月31日 1977年 2月17日 丙辰 火 龙 
1917年 1月23日 1918年 2月10日 1977年 2月18日 1978年 2月6日 丁巳 火 蛇 
1918年 2月11日 1919年 1月31日 1978年 2月7日 1979年 1月27日 戊午 土 马 
1919年 2月1日 1920年 2月19日 1979年 1月28日 1980年 2月15日 己未 土 羊 
1920年 2月20日 1921年 2月7日 1980年 2月16日 1981年 2月4日 庚申 金 猴 
1921年 2月8日 1922年 1月27日 1981年 2月5日 1982年 1月24日 辛酉 金 鸡 
1922年 1月28日 1923年 2月15日 1982年 1月25日 1983年 2月12日 壬戌 水 狗 
1923年 2月16日 1924年 2月4日 1983年 2月13日 1984年 2月1日 癸亥 水 猪 
1924年 2月5日 1925年 1月24日 1984年 2月2日 1985年 2月19日 甲子 木 鼠 
1925年 1月25日 1926年 2月12日 1985年 2月20日 1986年 2月8日 乙丑 木 牛 
1926年 2月13日 1927年 2月1日 1986年 2月9日 1987年 1月28日 丙寅 火 虎 
1927年 2月2日 1928年 1月22日 1987年 1月29日 1988年 2月16日 丁卯 火 兔 
1928年 1月23日 1929年 2月9日 1988年 2月17日 1989年 2月5日 戊辰 土 龙 
1929年 2月10日 1930年 1月29日 1989年 2月6日 1990年 1月26日 己巳 土 蛇 
1930年 1月30日 1931年 2月16日 1990年 1月27日 1991年 2月14日 庚午 金 马 
1931年 2月17日 1932年 2月5日 1991年 2月15日 1992年 2月3日 辛未 金 羊 
1932年 2月6日 1933年 1月25日 1992年 2月4日 1993年 1月22日 壬申 水 猴 
1933年 1月26日 1934年 2月13日 1993年 1月23日 1994年 2月9日 癸酉 水 鸡 
1934年 2月14日 1935年 2月3日 1994年 2月10日 1995年 1月30日 甲戌 木 狗 
1935年 2月4日 1936年 1月23日 1995年 1月31日 1996年 2月18日 乙亥 木 猪 
1936年 1月24日 1937年 2月10日 1996年 2月19日 1997年 2月6日 丙子 火 鼠 
1937年 2月11日 1938年 1月30日 1997年 2月7日 1998年 1月27日 丁丑 火 牛 
1938年 1月31日 1939年 2月18日 1998年 1月28日 1999年 2月15日 戊寅 土 虎 
1939年 2月19日 1940年 2月7日 1999年 2月16日 2000年 2月4日 己卯 土 兔 
1940年 2月8日 1941年 1月26日 2000年 2月5日 2001年 1月23日 庚辰 金 龙 
1941年 1月27日 1942年 2月14日 2001年 1月24日 2002年 2月11日 辛巳 金 蛇 
1942年 2月15日 1943年 2月4日 2002年 2月12日 2003年 1月31日 壬午 水 马    
1943年 2月5日 1944年 1月24日 2003年 2月1日 2004年 1月21日 癸未 水 羊 
1944年 1月25日 1945年 2月12日 2004年 1月22日 2005年 2月7日 甲申 木 猴 
1945年 2月13日 1946年 2月1日 2005年 2月8日 2006年 1月28日 乙酉 木 鸡 
1946年 2月2日 1947年 1月21日 2006年 1月29日 2007年 2月17日 丙戌 火 狗  
1947年 1月22日 1948年 2月9日 2007年 2月18日 2008年 2月6日 丁亥 火 猪 
1948年 2月10日 1949年 1月28日 2008年 2月7日 2009年 1月25日 戊子 土 鼠 
1949年 1月29日 2005年 2月16日 2009年 1月26日 2010年 2月23日 己丑 土 牛 
1950年 2月17日 1951年 2月5日 2010年 2月24日 2011年 2月2日 庚寅 金 虎 
1951年 2月6日 1952年 1月26日 2011年 2月3日 2012年 1月22日 辛卯 金 兔 
1952年 1月27日 1953年 2月13日 2012年 1月23日 2013年 2月9日 壬辰 水 龙 
1953年 2月14日 1954年 2月2日 2013年 2月10日 2014年 1月30日 癸巳 水 蛇 
1954年 2月3日 1955年 1月23日 2014年 1月31日 2015年 2月18日 甲午 木 马 
1955年 1月24日 1956年 2月11日 2015年 2月19日 2016年 2月7日 乙未 木 羊 
1956年 2月12日 1957年 1月30日 2016年 2月8日 2017年 1月27日 丙申 火 猴 
1957年 1月31日 1958年 2月17日 2017年 1月28日 2018年 2月15日 丁酉 火 猴 
1958年 2月18日 1959年 2月7日 2018年 2月16日 2019年 2月4日 戊戌 土 狗 
1959年 2月8日 1960年 1月27日 2019年 2月5日 2020年 1月24日 己亥 土 猪

为何今年农历2月没30?

8. 农历1991 01 05 是阳历哪年哪月哪日?

建一表,放初始化资料
因为农历的日期,是由天文学家推算出来的,到现在只有到2049年的,以后的有了还可以加入!
CREATE TABLE SolarData
(
    yearId int not null,
    data char(7) not null,
    dataInt int not null
)
--插入数据
INSERT INTO 
SolarData SELECT 1900,'0x04bd8',19416 UNION ALL SELECT 1901,'0x04ae0',19168
UNION ALL SELECT 1902,'0x0a570',42352 UNION ALL SELECT 1903,'0x054d5',21717
UNION ALL SELECT 1904,'0x0d260',53856 UNION ALL SELECT 1905,'0x0d950',55632
UNION ALL SELECT 1906,'0x16554',91476 UNION ALL SELECT 1907,'0x056a0',22176
UNION ALL SELECT 1908,'0x09ad0',39632 UNION ALL SELECT 1909,'0x055d2',21970
UNION ALL SELECT 1910,'0x04ae0',19168 UNION ALL SELECT 1911,'0x0a5b6',42422
UNION ALL SELECT 1912,'0x0a4d0',42192 UNION ALL SELECT 1913,'0x0d250',53840
UNION ALL SELECT 1914,'0x1d255',119381 UNION ALL SELECT 1915,'0x0b540',46400
UNION ALL SELECT 1916,'0x0d6a0',54944 UNION ALL SELECT 1917,'0x0ada2',44450
UNION ALL SELECT 1918,'0x095b0',38320 UNION ALL SELECT 1919,'0x14977',84343
UNION ALL SELECT 1920,'0x04970',18800 UNION ALL SELECT 1921,'0x0a4b0',42160
UNION ALL SELECT 1922,'0x0b4b5',46261 UNION ALL SELECT 1923,'0x06a50',27216
UNION ALL SELECT 1924,'0x06d40',27968 UNION ALL SELECT 1925,'0x1ab54',109396
UNION ALL SELECT 1926,'0x02b60',11104 UNION ALL SELECT 1927,'0x09570',38256
UNION ALL SELECT 1928,'0x052f2',21234 UNION ALL SELECT 1929,'0x04970',18800
UNION ALL SELECT 1930,'0x06566',25958 UNION ALL SELECT 1931,'0x0d4a0',54432
UNION ALL SELECT 1932,'0x0ea50',59984 UNION ALL SELECT 1933,'0x06e95',28309
UNION ALL SELECT 1934,'0x05ad0',23248 UNION ALL SELECT 1935,'0x02b60',11104
UNION ALL SELECT 1936,'0x186e3',100067 UNION ALL SELECT 1937,'0x092e0',37600
UNION ALL SELECT 1938,'0x1c8d7',116951 UNION ALL SELECT 1939,'0x0c950',51536
UNION ALL SELECT 1940,'0x0d4a0',54432 UNION ALL SELECT 1941,'0x1d8a6',120998
UNION ALL SELECT 1942,'0x0b550',46416 UNION ALL SELECT 1943,'0x056a0',22176
UNION ALL SELECT 1944,'0x1a5b4',107956 UNION ALL SELECT 1945,'0x025d0',9680
UNION ALL SELECT 1946,'0x092d0',37584 UNION ALL SELECT 1947,'0x0d2b2',53938
UNION ALL SELECT 1948,'0x0a950',43344 UNION ALL SELECT 1949,'0x0b557',46423
UNION ALL SELECT 1950,'0x06ca0',27808 UNION ALL SELECT 1951,'0x0b550',46416
UNION ALL SELECT 1952,'0x15355',86869 UNION ALL SELECT 1953,'0x04da0',19872
UNION ALL SELECT 1954,'0x0a5d0',42448 UNION ALL SELECT 1955,'0x14573',83315
UNION ALL SELECT 1956,'0x052d0',21200 UNION ALL SELECT 1957,'0x0a9a8',43432
UNION ALL SELECT 1958,'0x0e950',59728 UNION ALL SELECT 1959,'0x06aa0',27296
UNION ALL SELECT 1960,'0x0aea6',44710 UNION ALL SELECT 1961,'0x0ab50',43856
UNION ALL SELECT 1962,'0x04b60',19296 UNION ALL SELECT 1963,'0x0aae4',43748
UNION ALL SELECT 1964,'0x0a570',42352 UNION ALL SELECT 1965,'0x05260',21088
UNION ALL SELECT 1966,'0x0f263',62051 UNION ALL SELECT 1967,'0x0d950',55632
UNION ALL SELECT 1968,'0x05b57',23383 UNION ALL SELECT 1969,'0x056a0',22176
UNION ALL SELECT 1970,'0x096d0',38608 UNION ALL SELECT 1971,'0x04dd5',19925
UNION ALL SELECT 1972,'0x04ad0',19152 UNION ALL SELECT 1973,'0x0a4d0',42192
UNION ALL SELECT 1974,'0x0d4d4',54484 UNION ALL SELECT 1975,'0x0d250',53840
UNION ALL SELECT 1976,'0x0d558',54616 UNION ALL SELECT 1977,'0x0b540',46400
UNION ALL SELECT 1978,'0x0b5a0',46496 UNION ALL SELECT 1979,'0x195a6',103846
UNION ALL SELECT 1980,'0x095b0',38320 UNION ALL SELECT 1981,'0x049b0',18864
UNION ALL SELECT 1982,'0x0a974',43380 UNION ALL SELECT 1983,'0x0a4b0',42160
UNION ALL SELECT 1984,'0x0b27a',45690 UNION ALL SELECT 1985,'0x06a50',27216
UNION ALL SELECT 1986,'0x06d40',27968 UNION ALL SELECT 1987,'0x0af46',44870
UNION ALL SELECT 1988,'0x0ab60',43872 UNION ALL SELECT 1989,'0x09570',38256
UNION ALL SELECT 1990,'0x04af5',19189 UNION ALL SELECT 1991,'0x04970',18800
UNION ALL SELECT 1992,'0x064b0',25776 UNION ALL SELECT 1993,'0x074a3',29859
UNION ALL SELECT 1994,'0x0ea50',59984 UNION ALL SELECT 1995,'0x06b58',27480
UNION ALL SELECT 1996,'0x055c0',21952 UNION ALL SELECT 1997,'0x0ab60',43872
UNION ALL SELECT 1998,'0x096d5',38613 UNION ALL SELECT 1999,'0x092e0',37600
UNION ALL SELECT 2000,'0x0c960',51552 UNION ALL SELECT 2001,'0x0d954',55636
UNION ALL SELECT 2002,'0x0d4a0',54432 UNION ALL SELECT 2003,'0x0da50',55888
UNION ALL SELECT 2004,'0x07552',30034 UNION ALL SELECT 2005,'0x056a0',22176
UNION ALL SELECT 2006,'0x0abb7',43959 UNION ALL SELECT 2007,'0x025d0',9680
UNION ALL SELECT 2008,'0x092d0',37584 UNION ALL SELECT 2009,'0x0cab5',51893
UNION ALL SELECT 2010,'0x0a950',43344 UNION ALL SELECT 2011,'0x0b4a0',46240
UNION ALL SELECT 2012,'0x0baa4',47780 UNION ALL SELECT 2013,'0x0ad50',44368
UNION ALL SELECT 2014,'0x055d9',21977 UNION ALL SELECT 2015,'0x04ba0',19360
UNION ALL SELECT 2016,'0x0a5b0',42416 UNION ALL SELECT 2017,'0x15176',86390
UNION ALL SELECT 2018,'0x052b0',21168 UNION ALL SELECT 2019,'0x0a930',43312
UNION ALL SELECT 2020,'0x07954',31060 UNION ALL SELECT 2021,'0x06aa0',27296
UNION ALL SELECT 2022,'0x0ad50',44368 UNION ALL SELECT 2023,'0x05b52',23378
UNION ALL SELECT 2024,'0x04b60',19296 UNION ALL SELECT 2025,'0x0a6e6',42726
UNION ALL SELECT 2026,'0x0a4e0',42208 UNION ALL SELECT 2027,'0x0d260',53856
UNION ALL SELECT 2028,'0x0ea65',60005 UNION ALL SELECT 2029,'0x0d530',54576
UNION ALL SELECT 2030,'0x05aa0',23200 UNION ALL SELECT 2031,'0x076a3',30371
UNION ALL SELECT 2032,'0x096d0',38608 UNION ALL SELECT 2033,'0x04bd7',19415
UNION ALL SELECT 2034,'0x04ad0',19152 UNION ALL SELECT 2035,'0x0a4d0',42192
UNION ALL SELECT 2036,'0x1d0b6',118966 UNION ALL SELECT 2037,'0x0d250',53840
UNION ALL SELECT 2038,'0x0d520',54560 UNION ALL SELECT 2039,'0x0dd45',56645
UNION ALL SELECT 2040,'0x0b5a0',46496 UNION ALL SELECT 2041,'0x056d0',22224
UNION ALL SELECT 2042,'0x055b2',21938 UNION ALL SELECT 2043,'0x049b0',18864
UNION ALL SELECT 2044,'0x0a577',42359 UNION ALL SELECT 2045,'0x0a4b0',42160
UNION ALL SELECT 2046,'0x0aa50',43600 UNION ALL SELECT 2047,'0x1b255',111189
UNION ALL SELECT 2048,'0x06d20',27936 UNION ALL SELECT 2049,'0x0ada0',44448

利用存储过程:
CREATE PROCEDURE GetLunar_zhangzs
@solarDay DATETIME 
AS
  DECLARE @solData int    
  DECLARE @offset int    
  DECLARE @iLunar int    
  DECLARE @i INT     
  DECLARE @j INT     
  DECLARE @yDays int    
  DECLARE @mDays int    
  DECLARE @mLeap int    
  DECLARE @mLeapNum int    
  DECLARE @bLeap smallint    
  DECLARE @temp int    
  DECLARE @YEAR INT     
  DECLARE @MONTH INT    
  DECLARE @DAY INT    
  DECLARE @OUTPUTDATE varchar(10)    
  
  --保证传进来的日期是不带时间    
  SET @solarDay=cast(@solarDay AS char(10))    
  SET @offset=CAST(@solarDay-'1900-01-30' AS INT)  
  
  --确定农历年开始    
  SET @i=1900    
  --SET @offset=@solData    
  WHILE @i0    
  BEGIN    
    SET @yDays=348    
    SET @mLeapNum=0    
    SELECT @iLunar=dataInt FROM SolarData WHERE yearId=@i    
   
    --传回农历年的总天数    
    SET @j=32768    
    WHILE @j>8    
    BEGIN    
      IF @iLunar & @j >0    
        SET @yDays=@yDays+1    
      SET @j=@j/2    
    END    
    
    --传回农历年闰哪个月 1-12 , 没闰传回 0    
    SET @mLeap = @iLunar & 15    

    --传回农历年闰月的天数 ,加在年的总天数上    
    IF @mLeap > 0    
    BEGIN    
      IF @iLunar & 65536 > 0    
        SET @mLeapNum=30    
      ELSE     
        SET @mLeapNum=29    
        SET @yDays=@yDays+@mLeapNum    
    END    
    SET @offset=@offset-@yDays    
    SET @i=@i+1    
  END    
      
  IF @offset <= 0    
  BEGIN    
    SET @offset=@offset+@yDays    
    SET @i=@i-1    
  END    

  --确定农历年结束      
  SET @YEAR=@i    
  
  --确定农历月开始    
  SET @i = 1    
  SELECT @iLunar=dataInt FROM SolarData WHERE yearId=@YEAR  
  
  --判断那个月是润月    
  SET @mLeap = @iLunar & 15    
  SET @bLeap = 0   
  
  WHILE @i  0    
  BEGIN    
    --判断润月    
    SET @mDays=0    
    IF (@mLeap > 0 AND @i = (@mLeap+1) AND @bLeap=0)    
    BEGIN--是润月    
      SET @i=@i-1    
      SET @bLeap=1    
      --传回农历年闰月的天数    
      IF @iLunar & 65536 > 0    
        SET @mDays = 30    
      ELSE     
        SET @mDays = 29    
    END    
    ELSE    
    --不是润月    
    BEGIN    
      SET @j=1    
      SET @temp = 65536     
      WHILE @j<=@i    
      BEGIN    
        SET @temp=@temp/2    
        SET @j=@j+1    
      END    
      IF @iLunar & @temp > 0    
        SET @mDays = 30    
      ELSE    
        SET @mDays = 29    
    END       
    --解除闰月  
    IF @bLeap=1 AND @i= (@mLeap+1)  
      SET @bLeap=0  
      SET @offset=@offset-@mDays     
      SET @i=@i+1    
  END    
    
  IF @offset <= 0    
  BEGIN    
    SET @offset=@offset+@mDays    
    SET @i=@i-1    
  END    
  
  --确定农历月结束      
  SET @MONTH=@i  
    
  --确定农历日结束      
  SET @DAY=@offset    
    
 SET @OUTPUTDATE=convert(varchar(10),CAST((CAST(@YEAR AS VARCHAR(4))+'-'+CAST(@MONTH AS VARCHAR(2))+'-'+CAST(@DAY AS VARCHAR(2))) AS DATETIME) ,120)   
  select  convert( varchar(10),@solarDay ,120) as 阳历
  ,cast(dbo.f_num_str(year(@OUTPUTDATE)) as varchar(8))+'年|' + 
     case when datalength(dbo.f_num_str(month(@OUTPUTDATE)))=4 then case when left(dbo.f_num_str(month(@OUTPUTDATE)),1)'一'
     then left(month(@OUTPUTDATE),1) else '' end + '十'+ case when right(dbo.f_num_str(month(@OUTPUTDATE)),1)='零' then '' else right(dbo.f_num_str(month(@OUTPUTDATE)),1) end  else
     cast(dbo.f_num_str(month(@OUTPUTDATE)) as varchar(4)) end +'月|'
  + case when datalength(dbo.f_num_str(day(@OUTPUTDATE)))=4 then  case when cast(dbo.f_num_str(day(@OUTPUTDATE) )as varchar(4))='一零'then '初' else (case when left(cast(dbo.f_num_str(day(@OUTPUTDATE) )as varchar(4)),1)'一' 
    then left(cast(dbo.f_num_str(day(@OUTPUTDATE) )as varchar(4)),1) else '' end)end +'十'+ case when right(cast(dbo.f_num_str(day(@OUTPUTDATE) )as varchar(4)),1)='零' then '' else 
   right(cast(dbo.f_num_str(day(@OUTPUTDATE) )as varchar(4)),1)end else '初' +cast(dbo.f_num_str(day(@OUTPUTDATE) )as varchar(4)) end as  阴历
GO
--注意:存储过程中使用了自定义函数f_num_str
--加此函数的目的是把数字换大写
CREATE FUNCTION [dbo].[f_num_str] (@num int)
RETURNS varchar(100)
AS
BEGIN
  DECLARE @n_str VARCHAR(20),@re VARCHAR(20),@i int
  SELECT @n_str=cast(@num as varchar),@i=1,@re=''
  WHILE @i<=len(@n_str)
  BEGIN
    SET @re=@re+SUBSTRING('零一二三四五六七八九',CAST(SUBSTRING(@n_str,@i,1) AS int)+1,1)
    SET @i=@i+1
  END
  RETURN @re
END

--零壹贰叁肆伍陆柒捌玖
--调用存储过程 
exec GetLunar_zhangzs '1978-07-02'