为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[万年历公历农历转换]甲子日是怎么算的---2010年新历农历转换

2017-08-31 29页 doc 68KB 115阅读

用户头像

is_829858

暂无简介

举报
[万年历公历农历转换]甲子日是怎么算的---2010年新历农历转换[万年历公历农历转换]甲子日是怎么算的---2010年新历农历转换 [万年历公历农历转换]甲子日是怎么算 的???2010年新历农历转换 篇一 : 甲子日是怎么算的???2010年新历农历转换 阴历年份的是按10个天干初五 癸巳年戊午月己酉日 端午节 2013年6月13日 周四 农历五月初六 癸巳年戊午月庚戌日 2013年6月14日 周五 农历五月初七 癸巳年戊午月辛亥日 2013年6月15日 周六 农历五月初八 癸巳年戊午月壬子日 2013年6月16日 星期日 农历五月初九 癸巳年戊午月癸丑日 爸爸节 2013...
[万年历公历农历转换]甲子日是怎么算的---2010年新历农历转换
[万年历公历农历转换]甲子日是怎么算的---2010年新历农历转换 [万年历公历农历转换]甲子日是怎么算 的???2010年新历农历转换 篇一 : 甲子日是怎么算的???2010年新历农历转换 阴历年份的是按10个天干初五 癸巳年戊午月己酉日 端午节 2013年6月13日 周四 农历五月初六 癸巳年戊午月庚戌日 2013年6月14日 周五 农历五月初七 癸巳年戊午月辛亥日 2013年6月15日 周六 农历五月初八 癸巳年戊午月壬子日 2013年6月16日 星期日 农历五月初九 癸巳年戊午月癸丑日 爸爸节 2013年6月17日 周一 农历五月初十 癸巳年戊午月甲寅日 防治荒漠化和干旱日 2013年6月18日 周二 农历五月十一 癸巳年戊午月乙卯日 2013年6月19日 周三 农历五月十二 癸巳年戊午月丙辰日 2013年6月20日 周四 农历五月十三 癸巳年戊午月丁巳日 2013年6月21日 周五 农历五月十四 癸巳年戊午月戊午日 13:03夏至 2013年6月22日 周六 农历五月十五 癸巳年戊午月己未日 2013年6月23日 星期日 农历五月十六 癸巳年戊午月庚申日 国际奥林匹克日 2013年6月24日 周一 农历五月十七 癸巳年戊午月辛酉日 2013年6月25日 周二 农历五月十八 癸巳年戊午月壬戌日 全国土地日 2013年6月26日 周三 农历五月十九 癸巳年戊午月癸亥日 国际反毒品日 2013年6月27日 周四 农历五月二十 癸巳年戊午月甲子日 2013年6月28日 周五 农历五月廿一 癸巳年戊午月乙丑日 2013年6月29日 周六 农历五月廿二 癸巳年戊午月丙寅日 2013年6月30日 星期日 农历五月廿三 癸巳年戊午月丁卯日 篇三 : 万年历:2013年7月-2013年8月 2013年7月 1日 周一 农历五月廿四 癸巳年戊午月戊辰日 中国共产党建党日 世界建筑日 2013年7月 2日 周二 农历五月廿五 癸巳年戊午月己巳日 国际体育记者日 2013年7月 3日 周三 农历五月廿六 癸巳年戊午月庚午日 2013年7月 4日 周四 农历五月廿七 癸巳年戊午月辛未日 2013年7月 5日 周五 农历五月廿八 癸巳年戊午月壬申日 2013年7月 6日 周六 农历五月廿九 癸巳年戊午月癸酉日 2013年7月 7日 星期日 农历五月三十 癸巳年己未月甲戌日 06:34小暑 中国人民抗日战争纪念日 2013年7月 8日 周一 农历六月初一 癸巳年己未月乙亥日 2013年7月 9日 周二 农历六月初二 癸巳年己未月丙子日 2013年7月10日 周三 农历六月初三 癸巳年己未月丁丑日 2013年7月11日 周四 农历六月初四 癸巳年己未月戊寅日 世界人口日 2013年7月12日 周五 农历六月初五 癸巳年己未月己卯日 2013年7月13日 周六 农历六月初六 癸巳年己未月庚辰日 2013年7月14日 星期日 农历六月初七 癸巳年己未月辛巳日 2013年7月15日 周一 农历六月初八 癸巳年己未月壬午日 2013年7月16日 周二 农历六月初九 癸巳年己未月癸未日 2013年7月17日 周三 农历六月初十 癸巳年己未月甲申日 2013年7月18日 周四 农历六月十一 癸巳年己未月乙酉日 2013年7月19日 周五 农历六月十二 癸巳年己未月丙戌日 2013年7月20日 周六 农历六月十三 癸巳年己未月丁亥日 2013年7月21日 星期日 农历六月十四 癸巳年己未月戊子日 2013年7月22日 周一 农历六月十五 癸巳年己未月己丑日 23:55 大暑 2013年7月23日 ,)周二 农历六月十六 癸巳年己未月庚寅日 2013年7月24日 周三 农历六月十七 癸巳年己未月辛卯日 2013年7月25日 周四 农历六月十八 癸巳年己未月壬辰日 2013年7月26日 周五 农历六月十九 癸巳年己未月癸巳日 2013年7月27日 周六 农历六月二十 癸巳年己未月甲午日 2013年7月28日 星期日 农历六月廿一 癸巳年己未月乙未日 2013年7月29日 周一 农历六月廿二 癸巳年己未月丙申日 2013年7月30日 周二 农历六月廿三 癸巳年己未月丁酉日 非洲妇女日 2013年7月31日 周三 农历六月廿四 癸巳年己未月戊戌日 2013年8月 1日 周四 农历六月廿五 癸巳年己未月己亥日 中国建军节 2013年8月 2日 周五 农历六月廿六 癸巳年己未月庚子日 2013年8月 3日 周六 农历六月廿七 癸巳年己未月辛丑日 2013年8月 4日 星期日 农历六月廿八 癸巳年己未月壬寅日 2013年8月 5日 周一 农历六月廿九 癸巳年己未月癸卯日 2013年8月 6日 周二 农历六月三十 癸巳年己未月甲辰日 2013年8月 7日 周三 农历七月初一 癸巳年庚申月乙巳日 16:20立秋 2013年8月 8日 周四 农历七月初二 癸巳年庚申月丙午日 中国男子节 2013年8月 9日 周五 农历七月初三 癸巳年庚申月丁未日 2013年8月10日 周六 农历七月初四 癸巳年庚申月戊申日 2013年8月11日 星期日 农历七月初五 癸巳年庚申月己酉日 2013年8月12日 周一 农历七月初六 癸巳年庚申月庚戌日 2013年8月13日 周二 农历七月初七 癸巳年庚申月辛亥日 七七中国情人节 2013年8月14日 周三 农历七月初八 癸巳年庚申月壬子日 2013年8月15日 周四 农历七月初九 癸巳年庚申月癸丑日 日本正式宣布无条件投降日 2013年8月16日 周五 农历七月初十 癸巳年庚申月甲寅日 2013年8月17日 周六 农历七月十一 癸巳年庚申月乙卯日 2013年8月18日 星期日 农历七月十二 癸巳年庚申月丙辰日 2013年8月19日 周一 农历七月十三 癸巳年庚申月丁巳日 2013年8月20日 周二 农历七月十四 癸巳年庚申月戊午日 2013年8月21日 周三 农历七月十五 癸巳年庚申月己未日 2013年8月22日 周四 农历七月十六 癸巳年庚申月庚申日 2013年8月23日 周五 农历七月十七 癸巳年庚申月辛酉日 07:01处暑 2013年8月24日 周六 农历七月十八 癸巳年庚申月壬戌日 2013年8月25日 星期日 农历七月十九 癸巳年庚申月癸亥日 2013年8月26日 周一 农历七月二十 癸巳年庚申月甲子日 2013年8月27日 周二 农历七月廿一 癸巳年庚申月乙丑日 2013年8月28日 周三 农历七月廿二 癸巳年庚申月丙寅日 2013年8月29日 周四 农历七月廿三 癸巳年庚申月丁卯日 2013年8月30日 周五 农历七月廿四 癸巳年庚申月戊辰日 2013年8月31日 周六 农历七月廿五 癸巳年庚申月己巳日 篇四 : 万年历:1997年9月-1997年10月 1997年9月 1日 周一 农历七月三十 丁丑年戊申月丙午日 劳动节 1997年9月 2日 周二 农历八月初一 丁丑年戊申月丁未日 1997年9月 3日 周三 农历八月初二 丁丑年戊申月戊申日 1997年9月 4日 周四 农历八月初三 丁丑年戊申月己酉日 1997年9月 5日 周五 农历八月初四 丁丑年戊申月庚戌日 1997年9月 6日 周六 农历八月初五 丁丑年戊申月辛亥日 1997年9月 7日 星期日 农历八月初六 丁丑年己酉月壬子日 22:28白露 1997年9月 8日 周一 农历八月初七 丁丑年己酉月癸丑日 国际扫盲日 国际新闻工作者日 1997年9月 9日 周二 农历八月初八 丁丑年己酉月甲寅日 1997年9月10日 周三 农历八月初九 丁丑年己酉月乙卯日 教师节 1997年9月11日 周四 农历八月初十 丁丑年己酉月丙辰日 1997年9月12日 周五 农历八月十一 丁丑年己酉月丁巳日 1997年9月13日 周六 农历八月十二 丁丑年己酉月戊午日 1997年9月14日 星期日 农历八月十三 丁丑年己酉月己未日 世界清洁地球日 1997年9月15日 周一 农历八月十四 丁丑年己酉月庚申日 1997年9月16日 周二 农历八月十五 丁丑年己酉月辛酉日 中秋 节 国际臭氧层保护日国际和平日 1997年9月17日 周三 农历八月十六 丁丑年己酉月壬戌日 1997年9月18日 周四 农历八月十七 丁丑年己酉月癸亥日 九?一八事变纪念日 1997年9月19日 周五 农历八月十八 丁丑年己酉月甲子日 1997年9月20日 周六 农历八月十九 丁丑年己酉月乙丑日 国际爱牙日 1997年9月21日 星期日 农历八月二十 丁丑年己酉月丙寅日 1997年9月22日 周一 农历八月廿一 丁丑年己酉月丁卯日 1997年9月23日 周二 农历八月廿二 丁丑年己酉月戊辰日 07:55秋分 1997年9月24日 周三 农历八月廿三 丁丑年己酉月己巳日 1997年9月25日 周四 农历八月廿四 丁丑年己酉月庚午日 1997年9月26日 周五 农历八月廿五 丁丑年己酉月辛未日 1997年9月27日 周六 农历八月廿六 丁丑年己酉月壬申日 世界旅游日 1997年9月28日 星期日 农历八月廿七 丁丑年己酉月癸酉日 国际聋人节 世界儿童日 世界海事日 1997年9月29日 周一 农历八月廿八 丁丑年己酉月甲戌日 1997年9月30日 周二 农历八月廿九 丁丑年己酉月乙亥日 1997年10月 1日 周三 农历八月三十 丁丑年己酉月丙子日 国庆 节 世界音乐日 国际老人节 国际音乐日 1997年10月 2日 周四 农历九月初一 丁丑年己酉月丁丑日 国际和平与民主自由斗争日 1997年10月 3日 周五 农历九月初二 丁丑年己酉月戊寅日 1997年10月 4日 周六 农历九月初三 丁丑年己酉月己卯日 世界动物日 1997年10月 5日 星期日 农历九月初四 丁丑年己酉月庚辰日 1997年10月 6日 周一 农历九月初五 丁丑年己酉月辛巳日 国际住房日 1997年10月 7日 周二 农历九月初六 丁丑年己酉月壬午日 1997年10月 8日 周三 农历九月初七 丁丑年庚戌月癸未日 14:06寒露 全国高血压日 世界视觉日国际减轻自然灾害日 1997年10月 9日 周四 农历九月初八 丁丑年庚戌月甲申日 世界邮政日 万国邮联日 1997年10月10日 周五 农历九月初九 丁丑年庚戌月乙酉日 重阳节 辛亥革命纪念日世界精神卫生日 1997年10月11日 周六 农历九月初十 丁丑年庚戌月丙戌日 1997年10月12日 星期日 农历九月十一 丁丑年庚戌月丁亥日 1997年10月13日 周一 农历九月十二 丁丑年庚戌月戊子日 世界保健日 国际教师节 1997年10月14日 周二 农历九月十三 丁丑年庚戌月己丑日 世界标准日 1997年10月15日 周三 农历九月十四 丁丑年庚戌月庚寅日 国际盲人节 1997年10月16日 周四 农历九月十五 丁丑年庚戌月辛卯日 世界粮食日 1997年10月17日 周五 农历九月十六 丁丑年庚戌月壬辰日 世界消除贫困日 19[)97年10月18日 周六 农历九月十七 丁丑年庚戌月癸巳日 1997年10月19日 星期日 农历九月十八 丁丑年庚戌月甲午日 1997年10月20日 周一 农历九月十九 丁丑年庚戌月乙未日 1997年10月21日 周二 农历九月二十 丁丑年庚戌月丙申日 1997年10月22日 周三 农历九月廿一 丁丑年庚戌月丁酉日 世界传统医药日 1997年10月23日 周四 农历九月廿二 丁丑年庚戌月戊戌日 17:14霜降 1997年10月24日 周五 农历九月廿三 丁丑年庚戌月己亥日 联合国日 世界发展信息日 1997年10月25日 周六 农历九月廿四 丁丑年庚戌月庚子日 1997年10月26日 星期日 农历九月廿五 丁丑年庚戌月辛丑日 1997年10月27日 周一 农历九月廿六 丁丑年庚戌月壬寅日 1997年10月28日 周二 农历九月廿七 丁丑年庚戌月癸卯日 1997年10月29日 周三 农历九月廿八 丁丑年庚戌月甲辰日 1997年10月30日 周四 农历九月廿九 丁丑年庚戌月乙巳日 1997年10月31日 周五 农历十月初一 丁丑年庚戌月丙午日 世界 勤俭日 篇五 : 39公历和农历转换算法详解 公历和农历转换算法详解 //C51写的公历转农历和星期 #define uchar unsigned char #define uint unsigned int #include /* 公历年对应的农历数据,每年三字节, 格式第一字节BIT7-4 位示闰月月份,值为0 为无闰 月,BIT3-0 对应农历第1-4 月的大小 第二字节BIT7-0 对应农历第 5-12 月大小,第三字节BIT7 表示农历第13 个月大小 月份对应的位 为1 表示本农历月大,为0 表示小 第三字节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 1 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,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 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 0x0d,0x25,0x4B, 0x8d,0x52,0xBf, 0x0B,0x54,0x52, 0x0B,0x6A,0x47, 0x69,0x6d,0x3C, 0x09,0x5B,0x50, 0x04,0x9B,0x45, 0x4A,0x4B,0xB9, 0x0A,0x4B,0x4d, 0xAB,0x25,0xC2, 0x06,0xA5,0x54, 0x06,0xd4,0x49, 0x6A,0xdA,0x3d, 0x0A,0xB6,0x51, 0x09,0x37,0x46, 0x54,0x97,0xBB, 0x04,0x97,0x4f, 0x06,0x4B,0x44, 0x36,0xA5,0x37, 0x0e,0xA5,0x4A, 0x86,0xB2,0xBf, 0x05,0xAC,0x53, 0x0A,0xB6,0x47, 0x59,0x36,0xBC, 0x09,0x2e,0x50, 0x0C,0x96,0x45, 297 0x4d,0x4A,0xB8, //1975 //1976 //1977 //1978 //1979 //1980 //1981 //1982 //1983 //1984 //1985 //1986 //1987 //1988 //1989 //1990 //1991 //1992 //1993 //1994 //1995 //1996 //1997 //1998 //1999 294 //2000 //2001 0x0A,0x95,0x4e, 0x0B,0x4A,0x43, 0x4B,0x55,0x37, 0x0A,0xd5,0x4A, 0x95,0x5A,0xBf, 0x04,0xBA,0x53, 0x0A,0x5B,0x48, 0x65,0x2B,0xBC, 0x05,0x2B,0x50, 0x0A,0x93,0x45, 0x47,0x4A,0xB9, 0x06,0xAA,0x4C, 0x0A,0xd5,0x41, 0x24,0xdA,0xB6, 0x04,0xB6,0x4A, 0x69,0x57,0x3d, 0x0A,0x4e,0x51, 0x0d,0x26,0x46, 0x5e,0x93,0x3A, 0x0d,0x53,0x4d, 0x05,0xAA,0x43, 0x36,0xB5,0x37, 0x09,0x6d,0x4B, 0xB4,0xAe,0xBf, 0x04,0xAd,0x53, 0x0A,0x4d,0x48, 0x6d,0x25,0xBC, 2 //2010 0x0A,0x4B,0x51, 0x0A,0xA5,0x46, //2011 //2012 0x5B,0x52,0xBA, 0x06,0xd2,0x4e, //2013 //2014 0x0A,0xdA,0x42, 0x35,0x5B,0x37, //2015 0x09,0x37,0x4B, //2016 0x84,0x97,0xC1, //2017 //2018 0x04,0x97,0x53, //2019 0x06,0x4B,0x48, 0x66,0xA5,0x3C, //2020 0x0e,0xA5,0x4f, //2021 //2022 0x06,0xB2,0x44, //2023 0x4A,0xB6,0x38, 0x0A,0xAe,0x4C, //2024 0x09,0x2e,0x42, //2025 0x3C,0x97,0x35, //2026 0x0C,0x96,0x49, //2027 0x7d,0x4A,0xBd, //2028 //2029 0x0d,0x4A,0x51, 0x0d,0xA5,0x45, //2030 0x55,0xAA,0xBA, //2031 //2032 0x05,0x6A,0x4e, 0x0A,0x6d,0x43, //2033 //2034 0x45,0x2e,0xB7, //2035 0x05,0x2d,0x4B, //2036 0x8A,0x95,0xBf, //2045 //2046 //2048 //2047 //2049 //2050 //2051 //2052 //2053 //2054 //2056 //2055 //2057 //2058 //2060 //2059 //2061 //2062 //2063 //2064 //2065 //2067 //2066 //2068 //2069 //2070 //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 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,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 0x3A,0x93,0xB6, 0x0d,0x26,0x4A, //2080 //2089 0x2d,0x92,0xB5, 0x06,0x93,0x49, //2081 0x8e,0x93,0x3e, //2090 }; ///月份数据表 code uchar day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3}; code uint day_code2[3]={0x111,0x130,0x14e}; /* 函数功能:输入BCD阳历数据,输出BCD阴历数据 调用函数示例:Conversion 如:计算2004年10月16日 Conversion; 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 temp; switch { case 1:{temp=year_code[table_addr]&0x08; if return;else return;} case 2:{temp=year_code[table_addr]&0x04; if return;else return;} case 3:{temp=year_code[table_addr]&0x02; if return;else return;} case 4:{temp=year_code[table_addr]&0x01; if return;else return;} case 5:{temp=year_code[table_addr+1]&0x80; if return;else return;} case 6:{temp=year_code[table_addr+1]&0x40; if return;else return;} 3 //2099 case 7:{temp=year_code[table_addr+1]&0x20; if return;else return;} case 8:{temp=year_code[table_addr+1]&0x10; if return;else return;} case 9:{temp=year_code[table_addr+1]&0x08; if return;else return;} case 10:{temp=year_code[table_addr+1]&0x04; if return;else return;} case 11:{temp=year_code[table_addr+1]&0x02; if return;else return;} case 12:{temp=year_code[table_addr+1]&0x01; if return;else return;} case 13:{temp=year_code[table_addr+2]&0x80; if return;else return;} } } /* 函数功能:输入BCD阳历数据,输出BCD阴历数据 调用函数示 例:Conversion 如:计算2004年10月16日Conversion; 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 { //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 { table_addr=*0x3; } else { table_addr=*0x3; 4 } //定位数据表地址完成 //取当年春节所在的公历月份 temp1=year_code[table_addr+2]&0x60; temp1=_cror_; //取当年春节所在的公历月份完成 //取当年春节所在的公历日 temp2=year_code[table_addr+2]&0x1f; //取当年春节所在的公历 日完成 // 计算当年春年离当年元旦的天数,春节只会在公历1月或2月 if { 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 { temp4=day_code1[month-1]+day-1; } else { temp4=day_code2[month-10]+day-1; } if &&) { //如果公历月大于2月并且该年的2月为闰月,天数加1 temp4+=1; } //计算公历日离当年元旦的天数完成 //判断公历日在春节前还是春节后 if { //公历日在春节后或就是春节当日使用下面代码进行运算 temp4-=temp3; month=0x1; month_p=0x1; //month_p为月份指向,公历日在春节前或就是春节当日month_p指向首月 flag2=get_moon_day; //检查该农历月为大小还是小月,大月返回1,小月返回0 5 39公历和农历转换算法详解_农历转公历 flag_y=0; iftemp1=0x1d; //小月29天 else temp1=0x1e; //大小30天 temp2=year_code[table_addr]&0xf0; temp2=_cror_; //从数据表中取该年的闰月月份,如为0则该年无闰月 while { temp4-=temp1; month_p+=1; if { flag_y=~flag_y; if month+=1; } else month+=1; flag2=get_moon_day; iftemp1=0x1d; else temp1=0x1e; } day=temp4+1; } else { //公历日在春节前使用下面代码进行运算 temp3-=temp4; if { year=0x63;c=1; } else year-=1; table_addr-=0x3; month=0xc; temp2=year_code[table_addr]&0xf0; temp2=_cror_; if month_p=0xc; else month_p=0xd; // /*month_p为月份指向,如果当年有闰月,一年有十三个月,月指 向13,无闰月指向12*/ flag_y=0; flag2=get_moon_day; iftemp1=0x1d; else temp1=0x1e; while { temp3-=temp1; month_p-=1; ifmonth-=1; ifflag_y=~flag_y; flag2=get_moon_day; iftemp1=0x1d; else temp1=0x1e; } day=temp1-temp3+1; } c_moon=c; //HEX->BCD ,运算结束后,把数据转换为BCD数据 temp1=year/10; temp1=_crol_; temp2=year%10; year_moon=temp1|temp2; temp1=month/10; temp1=_crol_; temp2=month%10; month_moon=temp1|temp2; temp1=day/10; temp1=_crol_; temp2=day%10; day_moon=temp1|temp2; } /*函数功能:输入BCD阳历数据,输出BCD星期数据 调用函数示例:Conver_week 如:计算2004年10月16日Conversion; 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 {//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 {year+=0x64;} //如果为21世纪,年份数加100 temp1=year/0x4; //所过闰年数只算1900年之后的 temp2=year+temp1; temp2=temp2%0x7; //为节省资源,先进行一次取余,避免数大于0xff,避免使用整型数据 temp2=temp2+day+table_week[month-1]; if 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; Conversion; while; } 算法一:公历转农历 ==================================================== ======================== /*------------农历转换函数-----------*/ char *GetDayOf { /*天干名称*/ const char *cTianGan[] = {“甲”,”乙”,”丙”,”丁”,”戊”,”己”,”庚”,”辛”,”壬”,”癸”}; /*地支名称*/ const char *cDiZhi[] = {“子”,”丑”,”寅”,”卯”,”辰”,”巳”,”午”,”未”,”申”,”酉”,”戌”,”亥”}; /*属相名称*/ const char *cShuXiang[] = {“鼠”,”牛”,”虎”,”兔”,”龙”,”蛇”,”马”,”羊”,”猴”,”鸡”,”狗”,”猪”}; /*农历日期名*/ const char *cDayName[] = {“*”,”初一”,”初二”,”初三”,”初四”,”初五”, “初六”,”初七”,”初八”,”初九”,”初十”,”十一”,”十二”,”十三”,”十四”,”十五”,”十六”,”十”,”十八”,”十九”,”二十”,”廿一”,”廿二”,”廿三”,”廿四”,”廿五”,”廿六”,”廿七”,”廿八”,”廿九”,”三十”}; /*农历月份名*/ const char *cMonName[] = {“*”,”正”,”二”,”三”,”四”,”五”,”六”,”七”,”八”,”九”,”十”,”十一”,”腊”}; /*公历每月前面的天数*/ const int wMonthAdd[12] = {0,31,59,90,120,151,181,212,243,273,304,334}; /*农历数据*/ const int wNongliData[100] = {2635,333387,1701,1748,267701,694,2391,133423,1175,396438 ,3402,3749,331177,1453,694,201326,2350,465197,3221,3402 ,400202,2901,1386,267611,605,2349,137515,2709,464533,1738 ,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762 ,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413 ,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395 ,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031 ,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222 ,268949,3402,3493,133973,1386,464219,605,2349,334123,2709 ,2890,267946,2773,592565,1210,2651,395863,1323,2707,265877}; static int wCurYear,wCurMonth,wCurDay; static int nTheDate,nIsEnd,m,k,n,i,nBit; TCHAR szNongli[30], szNongliDay[10],szShuXiang[10]; /*---取当前公历年、月、日---*/ wCurYear = pSt->wYear; wCurMonth = pSt->wMonth; wCurDay = pSt->wDay; /*---计算到初始时间1921年2月8日的天数:1921-2-8---*/ nTheDate = * 365 + / 4 + wCurDay + wMonthAdd[wCurMonth - 1] - 38; if) && ) nTheDate = nTheDate + 1; /*--计算农历天干、地支、月、日---*/ nIsEnd = 0; m = 0; while { if k = 11; else k = 12; n = k; while { //获取wNongliData的第n个二进制位的值 nBit = wNongliData[m]; for nBit = nBit/2; nBit = nBit % 2; if ) { nIsEnd = 1; break; } nTheDate = nTheDate - 29 - nBit; n = n - 1; } if break; m = m + 1; } wCurYear = 1921 + m; wCurMonth = k - n + 1; wCurDay = nTheDate; if { if wCurMonth = 1 - wCurMonth; else if wCurMonth = wCurMonth - 1; } /*--生成农历天干、地支、属相 ==> wNongli--*/ wsprintf % 60) % 12]); wsprintf年”,szShuXiang,cTianGan[ % 60) % 10],cDiZhi[ % 60) % 12]); /*--生成农历月、日 ==> wNongliDay--*/ if wsprintf; else strcpy; strcat; strcat; return strcat; } ==================================================== ======================== 首先,我们要确定一个时刻,作为一天的起点。然后我们以月亮通过朔望交界点的那一天作为每个月的第一天,以太阳通过雨水点的那个月作为正月,依次的,以太阳通过各中气点的那个月作为二月、三月等等。 经过长期的观察之后,我们就会发现每个月不是29天就是30天,每年不是12个月就是13个月,每个中气点唯一对应一个月,但是有的月却没有中气。 为了制定我们的历法,我们至少要知道足够精度的朔望月长 度,记为ML,和两个中气的间隔时间记为YL,这两个值经过前人长期不懈的观测和计算,我们知道分别为29.5306日和30.4377日。接下来,我们要随便找到某一年,以太阳通过雨水点的时刻到那一年开始的那个时刻的时间,记为DY,以日为单位,还 39公历和农历转换算法详解_农历转公历 要找出这一年正月里,月亮通过朔望交界点的时刻到那一月开始的那个时刻的时间,记为DM,以日为单位。这两个值是要通过实地观测得出来的。 这个时候,我们就可以通过递推来制订我们的历法,以预测未来月球和太阳的运行情况,并进一步预测月相的变化和气候的变化。 在本算法中我们使用了三个近似处理: 每天的长度总是一样的; 每个朔望月的长度总是一样的; 每两个相邻中气的时间总是一样的。 接下来,我们就逐月推算每月的大小: Select Case Fix Case is = 29 The month have 29 days. The DM of next month is DM + ML - 29. Case is = 30 The month have 30 days. The DM of next month is DM + ML - 30. End Select 每年中各月的月份、是否为闰月 For i = 1 to 12 This month has A days. If DY>=A Then This month is an Extra Month. DY = DY - A Else This month is the i Month. DY = DY + YL - A i = i + 1 End If Next 这就是我们的核心算法。通过它,我们可以从任何一个包含中气的月份开始向后推算各月各年的情况。 由于我们所用的DM、DY、ML、YL都是近似值,若干年后,我们的历法必有偏差,我们只要重新观测,更新DM、DY、ML、YL的值就可以了。事实上,诸朝气数最多不过400年,在这些值精确到万分位的时候,通行一朝是完全可以的。 下面对大小月的排列和闰月的出现作一些定性分析 显然0?DM,1,那么 DM,0.4694时,当月为小月,下月为大月 DM?0.4694时,当月为大月 DM,0.4694 * 2时,下月为小月,下下月为大月 DM?0.4694 * 2时,下月亦为大月,下下月为小月 所以,大小月一般是交替出现,有时会出现连续两个月是大月的情况,但不会出现连续三个月或更多的是大月的情况,也不会出现连续两个月更多的是小月的情况。也就是说,一般是小月大月相继出现一段时间 后,接着就出现一个大月,然后又是小月大月相继出现,具体的间隔也不定,大家可以通过计算机推算后,找点规律出来。 一年中最少有十二个月,因为YL * 12 , ML * 12 + 1 ,最多有十三个月,因为30 + YL * 12 , ML * 14。两个相邻中气的间隔时间大于30,所以一个月不可能有两个中气,那么一年有十二个月的时候,12个中气必然刚好依次各居一个月,这一年就称为平年,一年有十三个月的时候,必然有且仅有一个月没有中气,那个月就时闰月,这一年就称为闰年。平年的时候,根据大小月的排列规则,一年最多有8个大月,最少有6个大月,因为ML * 12 + 1 , 30 * 8 + 29 * ,所以不可能有8个大月,最多为7个大月,那么一年就为354或355天。闰年的时候,根据大小月的排列规则,一年最多有9个大月,最少有6个大月,因为ML * 13 + 1 , 30 * 8 + 29 * ,所以不可能有8个或更多的大月,最多为7个大月,那么一年就为383或384天。 因为每月的天数不固定,所以闰月的出现规律也不好讨论,连续十二个月的天数也不固定,所以闰年的出现规律也不好讨论。不过 可以肯定是,每年的第一个月肯定不是闰月,因为我们是以包含中气雨水的月份作为正月,也就是每年的第一个月的。所以,闰月必定出现在某个有名字的月份后面,出现在哪个后面就叫闰哪月。 由于有闰月,所以函数形式: int toSolar; 引理:公历y-m-d一定在农历y-m-d之前 由引理,我们的探测可以从公历y-m-d开始,步骤如下: 1)toLunar; 2)估算ly0-lm0-ld0和ly-lm-ld的日子差 N = *12*29 + *29 + ; 3)如果 N > 0,把探测公历y-m-d加上这个天数, dateAddDays; 4)如果 N = 0,如果&&&&得到一个解sy=y;sm=m;sd=d; 否则表示出现误差,修正N = 1;dateAddDays; 从而开始探测闰月,令N = 30;dateAddDays; 5)如果 N = -30,肯定是上次探测N+29不够,应该+30, 所以令N = 1; dateAddDays; 经过测试,最多需要3次可以命中,还是比较理想的算法了:) PS:经过完全测试,公元1500-2100年没有问,最多尝试次数为3次 #define LUNAR_TO_SOLAR_STEPS 3 // 公历转公历搜索最长步数 // 农历返回公历 // 注意:这是我在掌心万年历中写的代码,版权属于我所有, 仅供个人学习使用,严禁在任何商业软件中使用本代码 // 输入 农历年-月-日 ly-lm-ld // 输出 公历年-月-日 y-m-d /* 公元1500年前的情况太特殊,比如公元9-1月,缺少农历11月,直接导致计算ldiff错误... 所以toSolar只支持1500年以后的转换. --ZV */ int toSolar { if { // 非常复杂的问题 return CALENDAR_ERROR; } int ret; int y = LunarYear; int m = abs; int d = LunarDay; int i, ldiff = 0, lunDate; int ly, lm, ld; validateDate; for { lunDate = toLunar; DATE_TO_YMD; if == abs && ld == LunarDay) { if { ret = YMD_TO_DATE; return ret; } // 如果找到一个,则开始探测闰月 ldiff = 30; // 要么直接转到,要么多了一天而已 } else { ldiff = * 12 * 29 + - abs) * 29 + ; if { // 稍做修正 ldiff = 1; } } dateAddDays; // 注意可能出现负数 } return CALENDAR_ERROR; }
/
本文档为【[万年历公历农历转换]甲子日是怎么算的---2010年新历农历转换】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索