公历转农历(a版本)

合集下载

excel公历转农历的四种方法

excel公历转农历的四种方法

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. 根据待转换的农历日期和正月初一的阳历日期进行计算,得出对应的阳历日期。

综上所述,阳历和农历的转换需要注意年份是否为闰年以及确定正月初一的阳历日期。

转换的方法可以通过查找对应表或使用一些公式进行计算。

如果只是简单的进行阳历和农历的转换,可以参考一些在线的农历转换工具或手机应用。

如果需要深入了解阳历和农历的转换原理以及计算方法,可以查阅相关书籍或网站。

希望以上内容能够对您有所帮助。

2024年全年阴历阳历日历表含农历A4纸一张打印

2024年全年阴历阳历日历表含农历A4纸一张打印
2024年11月
一二三四五六日
1 廿九 2345678 三十 初一 初二 初三 初四 白露 初六 9 10教 11 12 13 14 15 初七 师节 初九 初十 十一 十二 十三 16 17中 18 19 20 21 22 十四 秋节 十六 十七 十八 十九 秋分 23 24 25 26 27 28 29 廿一 廿二 廿三 廿四 廿五 廿六 廿七 30 廿八
2024年10月
一二三四五六日
1国 2 3 4 5 6 庆节 三十 初一 初二 初三 初四 7 8 9 10 11重 12 13 初五 寒露 初七 初八 阳节 初十 十一 14 15 16 17 18 19 20 十二 十三 十四 十五 十六 十七 十八 21 22 23 24 25 26 27 十九 二十 霜降 廿二 廿三 廿四 廿五 28 29 30 31 廿六 廿七 廿八 廿九
2024年9月
一二三四五六日
1建 2 3男 4 军节 廿八 人节 初一 5 6 7 8 9 10七 11 初二 初三 立秋 初五 初六 夕节 初八 12 13 14 15 16 17 18中 初九 初十 末伏 十二 十三 十四 元节 19 20 21 22 23 24出 25 十六 十七 十八 处暑 二十 伏 廿二 26 27 28 29 30 31 廿三 廿四 廿五 廿六 廿七 廿八
2024年5月
一二三四五六日
123
廿一 廿二 九九
4 5 6 7女 8妇 9 10
廿四 惊蛰 廿六 生节 女节 廿九 初一
11龙 12植 13 14 15 16 17
头节 树节 初四 初五 初六 初七 初八
18 初九 25
19 初十 26
20 春分 27
21 十二 28

公历转阴历

公历转阴历

首先是要保存公农历之间的转换信息:以任意一年作为起点,把从这一年起若干年(若干是多少?就看你的需要了)的农历信息保存起来(在我的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实现公历农历转换的三种方法

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周年国庆)是星期五。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

公历转农历(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)%。

相关文档
最新文档