公历转农历(a版本)
- 格式:docx
- 大小:12.61 KB
- 文档页数:5
excel公历转农历的四种方法excel公历转农历方法一:使用text函数A列是公历日期,我们在B1单元格输入公式:=TEXT(A1,"[$-130000]yyyy年m月"&I F(LEN(--TEXT(A1,"[$-130000]dd"))=1,"初","")&"d"),下拉完成公历转农历。
excel公历转农历方法二:使用text+MID函数A列仍然是公历,B1输入公式:=MID("甲乙丙丁戊己庚辛壬癸",MOD(TEXT(A1,"[$-13 0000]e")-4,10)+1,1)&MID("子丑寅卯辰巳午未申酉戌亥",MOD(TEXT(A1,"[$-130000]e")-4, 12)+1,1)&"年"&TEXT(A1,"[$-130000][DBNum1]m月d日"即可。
excel公历转农历方法三:使用text+MID+ CHOOSE+ YEAR函数A1为公历,B1输入:=CHOOSE(MOD(YEAR(A1)-1900,10)+1,"庚","辛","壬","癸","甲", "乙","丙","丁","戊","己")&CHOOSE(MOD(YEAR(A1)-1900,12)+1,"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥")&TEXT(A1,"[dbnum1][$-130000]年m月"&IF(--TEXT(A1, "[$-130000]d")<11,"初","")&TEXT(A1,"[dbnum1][$-130000]d"))excel公历转农历方法四:使用自定义函数上面介绍的excel公历转农历都是使用excel内置函数完成的,有一个弊端就是公式太长,如果使用自定义函数,在公式栏就可以简化输入。
【公历年份换算农历干支纪年口诀】(含公元前后两种换算方法公式)简单、实用、易学、好记【公历年份换算农历干支纪年口诀】干支纪年法是中国历法上自古以来就一直使用的纪年方法,采用的是阴阳合历。
干支是天干和地支的总称。
把干支顺序相配正好六十为一周,周而复始,循环记录,这就是俗称的“干支表”。
干支纪年以每年春节换年。
而在历史教学中记录一些事件的发生时间都是采用公元纪年,公元纪年和干支纪年有一个简单的换算口诀如下:一,用数字对应天干地支:自然数: 1 2 3 4 5 6 7 8 9 0天干:甲乙丙丁戊己庚辛壬癸自然数: 1 2 3 4 5 6 7 8 9 10 11 0地支:子丑寅卯辰巳午未申酉戌亥二,举例(以2018为例):公元年数减去3——2018-3=201510除余數是天干——2015÷10=201……5(戊)该数再用12除——2015÷12=167……11(戌)余数就把地支显所以2018年按干支纪年就是戊戌年。
以上是公历公元年份换算成农历干支纪年的计算方法。
下面姜毅同志研究发现了另一段年份的换算方法,即:公历公元前年份换算成农历干支纪年的计算方法:一,用數字對應天干地支:0 9 8 7 6 5 4 3 2 1天干:甲乙丙丁戊己庚辛壬癸0 1110 9 8 7 6 5 4 3 2 1地支:子丑寅卯辰巳午未申酉戍亥二,口訣並舉例(以公元前57年為例):公元前年數加3:57+3=601.60除10的余數是天干:60÷10=6……0(0对应的天干是甲);还有一种更简单明了的方法,就是年数加3后的和不用作除10计算,直接用和的个位数与天干对应即可。
2.60除12的余数是地支:60÷12=5……0(0对应的地支是子)余数就把地支显所以公元前57年换算成农历干支纪年就是甲子年。
又如:将公元前1250年换算成干支年:1250+3=1253① 和的个位3对应的天干为辛②1253÷12=104 (5)余数5对应的地支为未故公元前1250年为辛未年。
阳历农历转换简便方法阳历和农历是两种不同的日历系统,阳历是一种以地球绕太阳公转周期为基础的日历系统,而农历是一种以月亮的周期为基础的日历系统。
在进行阳历和农历的转换时,需要考虑到两种日历系统的差异和规律。
下面将介绍一种简便的方法来进行阳历和农历的转换。
首先,我们来看阳历转农历的方法。
阳历转农历主要涉及到年份、月份和日期的转换。
具体步骤如下:1. 首先确定待转换的阳历日期,包括年份、月份和日期。
2. 检查是否为闰年,闰年的判断规则是:公历年份能够被4整除但不能被100整除,或者能够被400整除的年份为闰年。
如果待转换的年份是闰年,则在后面的步骤中月份的天数需要进行调整。
3. 农历每年的正月初一对应的阳历日期不同,所以需要首先确定农历某一年对应的正月初一的阳历日期。
- 可以查找一些农历和阳历的对应表,查找待转换的年份对应的正月初一的阳历日期。
- 也可以使用一些公式进行计算,但比较复杂,具体公式可以在一些相关书籍或网站中查找。
4. 在确定了农历的正月初一对应的阳历日期之后,就可以根据待转换的阳历日期和正月初一的阳历日期进行计算,得出对应的农历日期。
接下来,我们来看农历转阳历的方法。
农历转阳历主要涉及到年份、月份和日期的转换。
具体步骤如下:1. 首先确定待转换的农历日期,包括年份、月份和日期。
2. 首先确定转换的年份是否为闰年,闰年的判断方法同上述阳历转农历中的判断方法。
3. 确定农历某一年对应的正月初一的阳历日期。
4. 根据待转换的农历日期和正月初一的阳历日期进行计算,得出对应的阳历日期。
综上所述,阳历和农历的转换需要注意年份是否为闰年以及确定正月初一的阳历日期。
转换的方法可以通过查找对应表或使用一些公式进行计算。
如果只是简单的进行阳历和农历的转换,可以参考一些在线的农历转换工具或手机应用。
如果需要深入了解阳历和农历的转换原理以及计算方法,可以查阅相关书籍或网站。
希望以上内容能够对您有所帮助。
首先是要保存公农历之间的转换信息:以任意一年作为起点,把从这一年起若干年(若干是多少?就看你的需要了)的农历信息保存起来(在我的VCL中,是以1921年作为起点)。
回想一下,我们平常是怎样来转换公历农历的呢?是查万年历,万年历有每一天的公历农历,直接一查就可以了。
那么我们可不可以也这样做呢?当然可以,但是,这样做就要收录每一天的信息,工作量就会很大,所以我们要简化这些信息。
怎么简化呢?要保存一年的信息其实只要两个信息就可以了:1、农历每个月的大小;2、今年是否有闰月,闰几月以及闰月的大小。
用一个整数来保存这些信息就足够了。
具体的方法是:用一位来表示一个月的大小,大月记为1,小月记为0,这样就用掉12位(无闰月)或13位(有闰月),再用高4位来表示闰月的月份,没有闰月记为0。
比如说,2000年的信息数据是是0xC96,化成二进制就是110010010110B,表示的含义是指1、2、5、8、10、11月大,其余月小;2001年的农历信息数据是0x41A95,其中4表示今年闰四月,月份大小信息就是0x1A95(因为闰月,所以有13位),具体的就是1、2、4、5、8、10、12月大,其余月份小(0x1A95=1101010010101B),要注意在四月的后面那一个0表示的是闰四月小,接着的那个1表示5月大。
这样就可以用一个数组来保存这些信息。
在我的VCL程序中是用ChineseCalendarData[]这个数组来保存这些信息。
为了方便对算法的理解,首先来看看我的VCL组件hsDivineCalendar的头文件//---------------------------------------------------------------------------#ifndef hsDivineCalendarH#define hsDivineCalendarH#define ALLYEARS 100 //定义转换的年数:100年//---------------------------------------------------------------------------#include <SysUtils.hpp>#include <Controls.hpp>#include <Classes.hpp>#include <Forms.hpp>//---------------------------------------------------------------------------class PACKAGE ThsDivineCalendar : public TComponent{private:int ChineseCalendarData[ALLYEARS]; //农历数据AnsiString str2,num; //要用的字符串void __fastcall c2e(); //农历到公历void __fastcall e2c(); //公历到农历TDateTime TheDate; //日期int FYear,FMonth,FDay,FTime; //公历年月日时int FcYear,FcMonth,FcDay,FcTime; //农历年月日时AnsiString __fastcall GetDateString(); //获取日期字符串AnsiString __fastcall GetcDateString(); //获取农历日期字符串int __fastcall GetBit(int m,int n); //获取1bitvoid __fastcall GetYMD(); //获取年月日void __fastcall SetDate(TDateTime); //用一个TDateTime类型的变量转换 //-----------分别修改公历的年月日时-------------------------------------void __fastcall SetYear(int AYear){SetBy(AYear,FMonth,FDay,FTime);};void __fastcall SetMonth(int AMonth){SetBy(FYear,AMonth,FDay,FTime);};void __fastcall SetDay(int ADay){SetBy(FYear,FMonth,ADay,FTime);};void __fastcall SetTime(int ATime){SetBy(FYear,FMonth,FDay,ATime);};//-----------分别修改农历的年月日时---------------------------------------void __fastcall SetcYear(int AcYear){SetByc(AcYear,FcMonth,FcDay,FcTime);};void __fastcall SetcMonth(int AcMonth){SetByc(FcYear,AcMonth,FcDay,FcTime);}; void __fastcall SetcDay(int AcDay){SetByc(FcYear,FcMonth,AcDay,FcTime);};void __fastcall SetcTime(int AcTime){SetByc(FcYear,FcMonth,FcDay,AcTime);}; TDateTime __fastcall GetLastJie(); //取得上一个节TDateTime __fastcall GetNextJie(); //取得下一个节TDateTime __fastcall GetLastQi(); //取得上一个中气TDateTime __fastcall GetNextQi(); //取得下一个中气int __fastcall GetDayOfWeek(); //取得一周的第几天AnsiString __fastcall GetWeekString(); //返回星期几的字符串protected:public:void __fastcall SetBy(int,int,int,int); //用公历设置void __fastcall SetByc(int,int,int,int); //用农历设置__fastcall ThsDivineCalendar(TComponent* Owner);//属性:年月日时__property int Year={read=FYear,write=SetYear};__property int Month={read=FMonth,write=SetMonth};__property int Day={read=FDay,write=SetDay};__property int Time={read=FTime,write=SetTime};//属性:农历年月日时__property int cYear={read=FcYear,write=SetcYear};__property int cMonth={read=FcMonth,write=SetcMonth};__property int cDay={read=FcDay,write=SetcDay};__property int cTime={read=FcTime,write=SetcTime};//公历农历日期字符串__property AnsiString DateString={read=GetDateString};__property AnsiString cDateString={read=GetcDateString};//其他属性__property TDateTime DateTime={read=TheDate,write=SetDate};__property TDateTime LastJie = { read=GetLastJie };__property TDateTime NextJie = { read=GetNextJie };__property TDateTime LastQi = { read=GetLastQi };__property TDateTime NextQi = { read=GetNextQi };__property int DayOfWeek = { read=GetDayOfWeek };__property AnsiString WeekString = { read=GetWeekString };__published:};//---------------------------------------------------------------------------#endif下面介绍转换的具体算法。
农历转换表格农历转换表格是一个能够将公历与农历互相转换的工具。
农历,又称阴历,是中国传统的历法,其基本单位是月,全年共有十二个月。
公历是现代常用的历法,是以地球绕太阳一周的时间为基础单位。
如何使用农历转换表格?第一步,打开农历转换表格网站,找到相关页面。
一些手机应用程序也可以提供转换功能。
第二步,根据你所需的转换类型,选择需要输入的日期格式。
如果你需要将农历转换为公历,那么你需要输入农历的年份、月份和日子。
如果你需要将公历转换为农历,那么你需要输入公历的年份、月份和日子。
第三步,输入你需要转换的日期。
在农历转换表格中,日期通常需要按照特定的格式输入,如“一九九七年八月十五日”。
在其他工具中,输入方式可能不同。
第四步,点击“转换”按钮,等待结果的生成。
结果可能包括公历日期和农历日期,或者仅仅包括一个所需的日期。
在使用农历转换表格时需要注意什么?第一,输入的日期格式必须完全正确。
如果你输入了错误的年份或月份,你将无法得到正确的结果。
第二,不同的农历转换表格可能使用不同的算法。
因为这些算法可能是基于不同的历法或者数据集的,所以它们的结果可能会有所不同。
如果你需要精确转换日期,你需要确保你所使用的算法是准确的。
第三,注意不同地区的日期习惯的差异。
由于时间和日期的标准不同,不同地区的农历转换表格可能使用不同的日期习惯。
所以,在使用转换表格时,需要清楚地了解你所需转换日期对应的习惯和标准。
总之,农历转换表格是一项非常方便的工具,可以帮助我们快速地将公历和农历互相转换。
如果你经常需要进行农历与公历之间的转换,那么使用农历转换表格将会节省你大量的时间,而且在计算过程中不会出现错误。
Excel实现公历农历转换的三种⽅法【导读】:有时候我们在输⼊⽇期数据的时候,往往需要输⼊农历的⽇期,但已经输⼊的⽇期是公历的⽇期,那么该怎么转换呢?接下来我们将为⼤家如何利⽤excel函数进⾏将公历⽇期转化为农历⽇期!⼀、简单版下表中B2单元格就是第⼀种情况,“2016-9-17”表⽰农历是九⽉⼗七⽇。
该公式是:=TEXT(A2,"[$-130000]YYYY-M-D")。
TEXT()⽤来转化⽂本格式,这个公式的关键是:[$-130000],它是Excel中阳历转化农历的参数,不过它存在⼀个问题就是没法计算闰⽉,估计⽼外⽆法理解中国⼈闰⽉的概念,凡是闰年,它直接表⽰⼀年13个⽉,道理是⼀样的。
⼆、进阶版(中⽂呈现)上表C2单元格,相⽐较B2单元格呈现就有了进阶,以中⽂呈现,并且以天⼲地⽀表现年份。
公式相对之前肯定复杂:=MID(" 甲⼄丙丁戊⼰庚⾟壬癸",MOD(TEXT(A2,"[$-130000]e")-4,10)+1,1)&MID("⼦丑寅卯⾠巳午未申⾣戌亥",MOD(TEXT(A2,"[$-130000]e")-4,12)+1,1)&"年"&TEXT(A2," [$-130000] [DBNum1]m⽉d⽇")我们可以分解为两⼤部分:1)计算年份:MID(" 甲⼄丙丁戊⼰庚⾟壬癸",MOD(TEXT(A2,"[$-130000]e")-4,10)+1,1)&MID("⼦丑寅卯⾠巳午未申⾣戌亥",MOD(TEXT(A2,"[$-130000]e")-4,12)+1,1)&"年",这⾥加了MID()⽂本提取函数来获取天⼲地⽀。
初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。
然而目前记时通常用阳历日期表达,如欲将阳历日期换算成阴历日期可以用以下两种方法:其一是查《新编万年历》,如查1984年6月8日是阴历几日?翻开万年历6月10日是阴历十一,则逆推6月8日是阴历初九。
其二可以利用公式推算阴历日期:设:公元年数-1977(或1901)=4q+r则:阴历日期=14q+10.6(r+1)+年内日期序数-29.5n(注:式中q、r、n均为自然数,r<4)例:1994年5月7日的阴历日期为:1994-1977=17=4×4+1故:q=4,r=1 则:5月7日的阴历日期为:14×4+10.6(1+1)+(31+28+31+31+7)-29.5n=204.2- 29.5n然后用29.5去除204.2得商数6......27.2,6即是n值,余数27即是阴历二十七日。
蔡勒(Zeller)公式:是一个计算星期的公式。
随便给一个日期,就能用这个公式推算出是星期几。
蔡勒公式如下:W = [ C/4 ] - 2C + y + [ y/4 ] + [ 13 * (M + 1) / 5] + d -1公式中的符号含义如下:W: 星期;w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六C: 世纪-1(前两位数)y: 年(后两位数)m: 月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)d: 日[ ]代表取整,即只要整数部分。
下面以中华人民共和国成立100周年纪念日那天(2049年10月1日)来计算是星期几,过程如下:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1=49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1=49+[12.25]+5-40+[28.6]=49+12+5-40+28=54 (除以7余5)即2049年10月1日(100周年国庆)是星期五。
公历与农历的转换方法包括但不限于以下几种:
查表法:通过查询预先编制的表格来获得对应的日期。
这种方法简单易行,但需要保证表格的准确性。
公式法:利用特定的数学公式进行转换。
这种方法需要掌握一定的数学基础,但可以快速准确地完成转换。
软件法:使用农历转公历的转换软件,这种方法简单易用,适合普通用户。
在线转换工具:现在有很多在线的农历转换工具可以使用,例如中国日历网、万年历网等,只需要输入公历的日期和时间,就可以得到对应的农历日期和时间。
使用农历转公历的转换器,也可以实现转换,操作相对简单。
以上方法各有特点,可以根据实际情况选择合适的方法进行转换。
需要注意的是,由于农历和公历的历法基础不同,转换过程中可能会存在误差,因此转换结果仅供参考,实际应用时需谨慎对待。
日期农历月份[$-130000]格式验证1[$-130000]格式验证2TEXT(A2,"[$-130000]m-d")=1898+MATCH(要转换的公历日期,{0;31;416;770;1125;1508;1862;2217;2601;2955;3310;3694;4048;4432;4786;5140;5524;5878;6233;6617;6972;7356;7710;8064;8448;8802;9156;9541;9895;10250;10634;10988;11371;11725;12080;12464;12819;13173;13557;13911;14295;14649;15003;15387;15742;16096;16481;16835;17189;17573;17927;18311;18665;19020;19404;19758;20113;20497;20851;21234;21589;21943;22327;22682;23036;23420;23775;24128;21900-1-31鼠年春节1899FALSE13-16根据阳历生日1901-2-19牛年春节1901TRUE1-161902-2-8虎年春节1902TRUE1-171903-1-29兔年春节1902FALSE13-181904-2-16龙年春节1904TRUE1-171905-2-4蛇年春节1904FALSE13-171906-1-25马年春节1905FALSE12-161907-2-13羊年春节1907TRUE1-171908-2-2猴年春节1907FALSE13-161909-1-22鸡年春节1908FALSE12-171910-2-10狗年春节1910TRUE1-181911-1-30猪年春节1910FALSE13-181912-2-18鼠年春节1912TRUE1-181914-1-26虎年春节1913FALSE13-16 1915-2-14兔年春节1915TRUE1-17 1916-2-3龙年春节1915FALSE13-16 1917-1-23蛇年春节1916FALSE12-17 1918-2-11马年春节1918TRUE1-17 1919-2-1羊年春节1918FALSE13-18 1920-2-20猴年春节1920TRUE1-18 1921-2-8鸡年春节1921TRUE1-17 1922-1-28狗年春节1921FALSE13-16 1923-2-16猪年春节1923TRUE1-17 1924-2-5鼠年春节1923FALSE13-17 1925-1-24牛年春节1924FALSE12-16 1926-2-13虎年春节1926TRUE1-17 1927-2-2兔年春节1926FALSE13-17 1928-1-23龙年春节1927FALSE12-18 1929-2-10蛇年春节1929TRUE1-17 1930-1-30马年春节1929FALSE13-17 1931-2-17羊年春节1931TRUE1-17 1932-2-6猴年春节1932TRUE1-16 1933-1-26鸡年春节1932FALSE13-17 1934-2-14狗年春节1934TRUE1-17 1935-2-4猪年春节1934FALSE13-17 1936-1-24鼠年春节1935FALSE12-17 1937-2-11牛年春节1937TRUE1-16 1938-1-31虎年春节1937FALSE13-16 1939-2-19兔年春节1939TRUE1-17 1940-2-8龙年春节1940TRUE1-17 1941-1-27蛇年春节1940FALSE13-16 1942-2-15马年春节1942TRUE1-16 1943-2-5羊年春节1942FALSE13-17 1944-1-25猴年春节1943FALSE12-16 1945-2-13鸡年春节1945TRUE1-17 1946-2-2狗年春节1945FALSE13-17 1947-1-22猪年春节1946FALSE12-18 1948-2-10鼠年春节1948TRUE1-18 1949-1-29牛年春节1948FALSE13-17 1950-2-17虎年春节1950TRUE1-17 1951-2-6兔年春节1951TRUE1-16 1952-1-27龙年春节1951FALSE13-17 1953-2-14蛇年春节1953TRUE1-16 1954-2-3马年春节1953FALSE13-16 1955-1-24羊年春节1954FALSE12-18 1956-2-12猴年春节1956TRUE1-18 1957-1-31鸡年春节1956FALSE13-18 1958-2-18狗年春节1958TRUE1-17 1959-2-8猪年春节1959TRUE1-17 1960-1-28鼠年春节1960TRUE1-1 1961-2-15牛年春节1961TRUE1-1 1962-2-5虎年春节1962TRUE1-1 1963-1-25兔年春节1963TRUE1-1 1964-2-13龙年春节1964TRUE1-11966-1-21马年春节1965FALSE12-30 1967-2-9羊年春节1967TRUE1-1 1968-1-30猴年春节1968TRUE1-1 1969-2-17鸡年春节1969TRUE1-1 1970-2-6狗年春节1970TRUE1-1 1971-1-27猪年春节1971TRUE1-1 1972-2-15鼠年春节1972TRUE1-1 1973-2-3牛年春节1973TRUE1-1 1974-1-23虎年春节1974TRUE1-1 1975-2-11兔年春节1975TRUE1-1 1976-1-31龙年春节1976TRUE1-1 1977-2-18蛇年春节1977TRUE1-1 1978-2-7马年春节1978TRUE1-1 1979-1-28羊年春节1979TRUE1-1 1980-2-16猴年春节1980TRUE1-1 1981-2-5鸡年春节1981TRUE1-1 1982-1-25狗年春节1982TRUE1-1 1983-2-13猪年春节1983TRUE1-1 1984-2-2鼠年春节1984TRUE1-1 1985-2-20牛年春节1985TRUE1-1 1986-2-9虎年春节1986TRUE1-1 1987-1-29兔年春节1987TRUE1-1 1988-2-17龙年春节1987FALSE13-30 1989-2-6蛇年春节1989TRUE1-1 1990-1-27马年春节1990TRUE1-1 1991-2-15羊年春节1991TRUE1-1 1992-2-4猴年春节1992TRUE1-1 1993-1-23鸡年春节1993TRUE1-1 1994-2-10狗年春节1994TRUE1-1 1995-1-31猪年春节1995TRUE1-1 1996-2-19鼠年春节1996TRUE1-1 1997-2-7牛年春节1996FALSE12-30 1998-1-28虎年春节1998TRUE1-1 1999-2-16兔年春节1999TRUE1-1 2000-2-5龙年春节2000TRUE1-1 2001-1-24蛇年春节2001TRUE1-1 2002-2-12马年春节2002TRUE1-1 2003-2-1羊年春节2003TRUE1-1 2004-1-22猴年春节2004TRUE1-1 2005-2-9鸡年春节2005TRUE1-1 2006-1-29狗年春节2006TRUE1-1 2007-2-18猪年春节2007TRUE1-1 2008-2-7鼠年春节2008TRUE1-1 2009-1-26牛年春节2009TRUE1-1 2010-2-14虎年春节2010TRUE1-1 2011-2-3兔年春节2011TRUE1-1 2012-1-23龙年春节2012TRUE1-1 2013-2-10蛇年春节2013TRUE1-1 2014-1-31马年春节2014TRUE1-1 2015-2-19羊年春节2015TRUE1-1 2016-2-8猴年春节2016TRUE1-12018-2-16狗年春节2018TRUE1-1 2019-2-5猪年春节2019TRUE1-1 2020-1-25鼠年春节2020TRUE1-1 2021-2-12牛年春节2021TRUE1-1 2022-2-1虎年春节2022TRUE1-1 2023-1-22兔年春节2023TRUE1-1 2024-2-10龙年春节2024TRUE1-1 2025-1-29蛇年春节2025TRUE1-1 2026-2-17马年春节2026TRUE1-1 2027-2-6羊年春节2026FALSE12-30 2028-1-26猴年春节2027FALSE12-30 2029-2-13鸡年春节2029TRUE1-1 2030-2-3狗年春节2030TRUE1-1 2031-1-23猪年春节2031TRUE1-1 2032-2-11鼠年春节2032TRUE1-1 2033-1-31牛年春节2033TRUE1-1 2034-2-19虎年春节2034TRUE1-1 2035-2-8兔年春节2035TRUE1-1 2036-1-28龙年春节2036TRUE1-1 2037-2-15蛇年春节2037TRUE1-1 2038-2-4马年春节2038TRUE1-1 2039-1-24羊年春节2039TRUE1-1 2040-2-12猴年春节2040TRUE1-1 2041-2-1鸡年春节2041TRUE1-1 2042-1-22狗年春节2042TRUE1-1 2043-2-10猪年春节2043TRUE1-1 2044-1-30鼠年春节2044TRUE1-1 2045-2-17牛年春节2045TRUE1-1 2046-2-6虎年春节2046TRUE1-1 2047-1-26兔年春节2047TRUE1-1 2048-2-14龙年春节2048TRUE1-1 2049-2-2蛇年春节2049TRUE1-1 2050-1-23马年春节2050TRUE1-1 2051-2-11羊年春节2051TRUE1-15 2052-2-1猴年春节2051FALSE13-15 2053-2-19鸡年春节2053TRUE1-15 2054-2-8狗年春节2054TRUE1-15 2055-1-28猪年春节2054FALSE13-14 2056-2-15鼠年春节2056TRUE1-14 2057-2-4牛年春节2057TRUE1-14 2058-1-24虎年春节2057FALSE13-14 2059-2-12兔年春节2059TRUE1-14 2060-2-2龙年春节2059FALSE13-15 2061-1-21蛇年春节2060FALSE12-15 2062-2-9马年春节2062TRUE1-14 2063-1-29羊年春节2062FALSE13-14 2064-2-17猴年春节2064TRUE1-15 2065-2-5鸡年春节2065TRUE1-14 2066-1-26狗年春节2065FALSE13-15 2067-2-14猪年春节2067TRUE1-15 2068-2-3鼠年春节2067FALSE13-152070-2-11虎年春节2070TRUE1-15 2071-1-31兔年春节2070FALSE13-14 2072-2-19龙年春节2072TRUE1-15 2073-2-7蛇年春节2073TRUE1-14 2074-1-27马年春节2073FALSE13-14 2075-2-15羊年春节2075TRUE1-14 2076-2-5猴年春节2075FALSE13-15 2077-1-24鸡年春节2076FALSE12-16 2078-2-12狗年春节2078TRUE1-15 2079-2-2猪年春节2078FALSE13-15 2080-1-22鼠年春节2079FALSE12-14 2081-2-9牛年春节2081TRUE1-14 2082-1-29虎年春节2081FALSE13-14 2083-2-17兔年春节2083TRUE1-14 2084-2-6龙年春节2084TRUE1-15 2085-1-26蛇年春节2084FALSE13-16 2086-2-14马年春节2086TRUE1-15 2087-2-3羊年春节2086FALSE13-15 2088-1-24猴年春节2087FALSE12-15 2089-2-10鸡年春节2089TRUE1-14 2090-1-30狗年春节2089FALSE13-13 2091-2-18猪年春节2091TRUE1-14 2092-2-7鼠年春节2092TRUE1-15 2093-1-27牛年春节2092FALSE13-16 2094-2-15虎年春节2094TRUE1-15 2095-2-5兔年春节2095TRUE1-15 2096-1-25龙年春节2095FALSE13-15 2097-2-12蛇年春节2097TRUE1-15 2098-2-1马年春节2097FALSE13-14 2099-1-21羊年春节2098FALSE12-14 2100-2-9猴年春节2100TRUE1-15农历日期顺序初一初二初三初四初五初六初七初八初九初十十一十二十三十五十六十七十八十九二十廿一廿二廿三廿四廿五廿六廿七廿八廿九三十。
公历转农历(A 版本)
Tags:版本wCurMo nth wCur Year if 农历nTheDate n Bit con st 公历转农历(C 版本)PHP开发环境的选择、建立及使用[8]编写自定义任务,轻松扩展An t (2)代联接的自定义右键菜单面试中如何体现身价希特勒生日(4月20日)突破生命中那条线怎么用ado打开带密码的access数据库算法复杂度攻击激烈讨论在
Visual 中使用自定义插公历转农历(C版本)版本wCurMonth wCurYear if 农历nTheDate nBit const
前段时间做软件写了个公历转农历的函数,目前公开给大家参考,有兴趣的朋
友可以在此基础上进一步完善其功能
/* ----------- 农历转换函数------ */
char *GetDayOf(PSYSTEMTIME pSt)
{
/* 天干名称*/
const char *cTianGan[] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};
/* 地支名称*/
const char *cDiZhi[] = {"子","丑","寅","卯","辰","巳","午",
I! 未","申","酉","戌","亥"};
/* 属相名称*/
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,13 18,204070,3477,461653,1386,2413 ,330077,1197,2637,268877,3365,531109,29 00,2922,398042,2395 ,1179,267415,2635,661067,1701,1748,398772,2742,2391 ,330031 ,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222 ,26894 9,3402,3493,133973,1386,464219,605,2349,334123,2709 ,2890,267946,2773,5 92565,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=(wCurYear-1921)*365+(wCurYear-
1921)/4+wCurDay+wMonthAdd[wCurMonth - 1] - 38;
if((!(wCurYear % 4)) && (wCurMonth > 2))
nTheDate = nTheDate + 1;
/*-- 计算农历天干、地支、月、日---*/
nIsEnd = 0;
m = 0;
while(nIsEnd != 1)
{
if(wNongliData[m] < 4095)
k = 11;
else
k = 12;
n = k;
while(n>=0)
{
//获取wNongliData(m)的第n个二进制位的值
nBit = wNongliData[m];
for(i=1;i<n+1;i++)
nBit = nBit/2;
nBit = nBit % 2;
if (nTheDate <= (29 + nBit))
{
nIsEnd = 1; break;
}
nTheDate = nTheDate - 29 - nBit; n = n - 1;
}
if(nIsEnd)
break;
m = m + 1;
}
wCurYear = 1921 + m; wCurMonth = k - n + 1; wCurDay = nTheDate; if (k == 12)
{
if (wCurMonth == wNongliData[m] / 65536 + 1)
wCurMonth = 1 - wCurMonth;
else if (wCurMonth > wNongliData[m] / 65536 + 1)
wCurMonth = wCurMonth - 1;
}
/*-- 生成农历天干、地支、属相==> wNongli--*/
wsprintf(szShuXiang,"%s",cShuXiang[((wCurYear - 4) % 60) % 12]); wspri ntf(szNo ngli,"%s(%s%s年",szShuXia ng,cTia nGan [((wCurYear 10],cDiZhi[((wCurYear - 4) % 60) % 12]);
/*-- 生成农历月、日==> wNongliDay--*/
if (wCurMonth < 1)
wspri ntf(szNo ngliDay,"闰%s",cMo nN ame[-1 * wCurMo nth]);
else
strcpy(szNongliDay,cMonName[wCurMonth]);
strcat(szNongliDay,月");
strcat(szNongliDay,cDayName[wCurDay]);
return strcat(szNongli,szNongliDay);
}-4)%60)%。