
万年历的c语言程序代码包括节假日农历,农历转公历,公历农历查询某 / 多格式万年历 1问题 设计程序实现多规格打印万年历,要求每一横排打印x个月 整数x可取1,2,3,4,6五个选项 2设计思路 设置两个数组:一维m数组存放月份的天数,如m(8)=31,即8月份为31天 二维d数组存放日号,如d(3,24)=11,即3月份第2个星期的星期4为11号 其中24分解为十位数字2与个位数字4,巧妙地利用二维数组存放了三维信息 输入年号y,m数组数据通过赋值完成。根据历法规定,平年二月份为28天; 若年号能被4整除且不被100整除,或能被400整除,该年为闰年,二月份为29天 则必须把m(2)改为29 同时,根据历法,设y年元旦是星期w(取值0-6,0为星期日),整数w的计算公式为 w={y+[(y-1)/4]-[(y-1)/100]+[(y-1)/400]}%7 []为取整。 元旦以后 ,每增加一天,w增1,当w=7时改为w=0即可。 设置三重循环i、j、k为d数组的d(i,j10+k)赋值。i:1-12,表示月份号;j:1-60 表示每个月约定最多6个星期;k;0-6,表示星期k。从元旦的a=1开始,每赋一个元素, a增1,同时w=k+1。当w=7时,w=0(为星期日)。当a>m(i)时,终止第i月的赋值 *** 作。 输入格式参数x(1,2,3,4,6),设置4重循环控制规格打印: n循环,n:1-12/x,控制打印12/x段(每一段x个月)。、 j循环,j:1-6,控制打印每月的6个星期(6行)。 i循环,i:t--t+x-1,控制打印每行x个月(从第t个月至t+x-1月,t=x(n-1)+1) k循环,k:0-6,控制打印每个星期的7天。 / #include #include void main() { int a,i,j,n,k,t,w,x,y,z; static int d[13][78]; int m[14]={0,31,28,31,30,31,30,31,31,30,31,30,31}; char wst[]=Sun Mon Tue Wed Thu Fri Sat; puts(Please enter the year: ); scanf(%d,&y); if(y%4==0&&y%100!=0||y%400==0)闰年的二月为29天 m[2]=29; w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;计算y年元旦为星期w for(i=1;im[i]) break; } if(a>m[i]) break; } } puts>>
万年历农历查询 你想查什么啊
放假安排
2016年放假安排时间表日历(图) 官方2016年全年公休假放假安排 2016年节假日放假安排 2016全体公民放假的节日 2016年放假安排时间表通知 2016年放假安排时间表国务院 2016年放假安排时间表(官方版) 2016年放假安排时间表图 2016年全年公休假
2016年五一放假安排 2016年青年节放假安排 2016年儿童节放假安排时间 2016年端午放假安排 2016年抗战胜利纪念日放假安排 2016年中秋放假安排时间表 2016年重阳节放假安排 2016年国庆放假安排时间表 2016年12月放假安排时间表日历 2016年11月放假安排时间表日历 2016年10月放假安排时间表日历 2016年9月放假安排时间表日历 2016年8月放假安排时间表日历 2016年7月放假安排时间表日历 2016年6月放假安排时间表日历 2016年5月放假安排时间表日历 2016年4月放假安排时间表日历
日历表 2016年日历带农历全年 2016年全年日历表
2016年12月份日历表 2016年10月份日历表 2016年9月份日历表 2016年8月份日历表 2016年7月份日历表 2016年6月份日历表 2016年5月份日历表 2016年4月份日历表
二十四节气 立春节气 雨节气水 惊蛰节气 春分节气 清明节气 谷雨节气 立夏节气 小满节气 芒种节气 夏至节气 小暑节气 大暑节气 立秋节气 处暑节气 白露节气 秋分节气 寒露节气 霜降节气 立冬节气 小雪节气 大雪节气 冬至节气 小寒节气 大寒节气
十二时辰 亥时 戌时 酉时 申时 未时 午时 巳时 辰时 卯时 寅时 丑时 子时
吉日吉时查询 结婚黄道吉日 领结婚证吉日 搬家吉日 理发吉日 开业吉日 提车黄道吉日 下葬吉日 上梁吉日 开光吉日 祈福吉日 挂牌吉日 生子吉日 祭祀吉日 婚嫁吉日 安床吉日 领证吉日 装修吉日 入宅吉日 出行吉日 纳婿吉日 安门吉日 起基吉日 竖柱吉日 谢土吉日 栽种吉日 沐浴吉日 出火吉日 开厕吉日 塞穴吉日 移柩吉日 开池吉日
2016黄道吉日 2016年12月黄道吉日 2016年11月黄道吉日 2016年10月黄道吉日 2016年9月黄道吉日 2016年8月黄道吉日 2016年7月黄道吉日 2016年6月黄道吉日 2016年5月黄道吉日 2016年4月黄道吉日
2016结婚吉日 2016年12月结婚吉日 2016年11月结婚吉日 2016年10月结婚吉日 2016年9月结婚吉日 2016年8月结婚吉日 2016年7月结婚吉日 2016年6月结婚吉日 2016年5月结婚吉日 2016年4月结婚吉日
2016订婚吉日 2016年4月订婚吉日 2016年5月订婚吉日 2016年6月订婚吉日 2016年7月订婚吉日 2016年8月订婚吉日 2016年9月订婚吉日 2016年10月订婚吉日 2016年11月订婚吉日
2016提车吉日 2016年4月提车吉日 2016年5月提车吉日 2016年6月提车吉日 2016年7月提车吉日 2016年8月提车吉日 2016年9月提车吉日 2016年10月提车吉日 2016年11月提车吉日 2016年12月提车吉日
2016搬家吉日 2016年12月搬家吉日 2016年11月搬家吉日 2016年10月搬家吉日 2016年9月搬家吉日 2016年8月搬家吉日 2016年7月搬家吉日 2016年6月搬家吉日 2016年5月搬家吉日 2016年4月搬家吉日
节日大全 劳动节 妇女节
儿童节 植树节 >>
农历查询节气几九了 2015年12月30日是一九第9天
公历2015-12-30查询信息如下:
公历:2015年12月30日星期三摩羯座
农历:羊年 冬月 二十日
四柱:乙未 戊子 庚辰
节气:一九第9天
生诞: 二十八宿:尾 甲子纳音:白腊金 距离今日:还有0天
日历表上看到的是农历日期,怎么知道农历月份 农历是大写,阴历是小写,现在是农历二月份阴历四月份
2015农历日历查询哪天日子好 每天黄历都有相应的宜和忌,这个不好说那天日子好,要看你干什么了。我建议你下载个人生日历,这个上面就能看到每天的黄历宜忌,我现在就在用。
万年历查询 日历查询 农历查询 农历日1979217历 老黄历 万年历表 1979-03-15 星期四,二月十七,己未年 羊年,丁卯月 辛巳日;
日历表上写的应该是阴历还是阳历? 日历表上写的应该是阳历
下面小字对应的是阴历
十二星座日期农历查询 星座是按出生那年的阳历(新历,公历)生日划分的
下面是星座日期划分表,把阳历生日对照下面的就可以知道是什么星座啦
白羊座 ( 03/21 - 04/20 )
金牛座 ( 04/21 - 05/20)
双子座 ( 05/21 - 06/21)
巨蟹座 ( 06/22- 07/22)
狮子座 ( 07/23 - 08/22)
处女座 ( 08/23 - 09/22)
天秤座 ( 09/23 - 10/23)
天蝎座 ( 10/24 - 11/22)
射手座 ( 11/23 - 12/21)
魔羯座 ( 12/22 - 01/19)
水瓶座 ( 01/ 20- 02/18)
双鱼座 ( 02/19- 03/20)
日历表2015农历宜忌查询结果是什么 每天不一样啊
日历查询 农历19841108公历是多少? 万年历公历 1984年12月29日 星期六
农历 十一月初八 甲子年 鼠年丙子月 丁酉日
农历转换成公历的计算公式? 因为公历(现在用的是格里历,以前还曾用儒列历)和中国农历都不是严格按一个公式计算得到的,所以两个历法没有直接的公式。
试图用一个简单的公式,而不利用许多像万年历一样的数据(尽管可以简化),就达到公农历转换的目的,这是不可能的。我们能见到的所有公农历转换的软件,都存有多少不等的一些年份的历法数据。
这些数据之中,最重要的是农历的每月天数。因为农历是阴阳历,阴历部分(按月相编的部分)决定月日,阳历部分(按太阳高度编的部分)就是节气。节气基本上是与公历直接对应的,可以较容易的推算;但月相周期与地球公转的关系相对复杂,一般都需要天文观测数据授时,所以农历每月是大月还是小月没有简单的公式。
至于公历和农历的置闰,倒都有一定的方式推算,并不困难。
如果只是天文数据,其实都还是可以算的――因为天文周期十分稳定,我们只要严格地按天文周期推算就可以了。可是还有更为麻烦的一点,就是公历和农历这些历法,并不是完全严格地按照天文上的实际周期进行的,还有许多人为的因素。最著名的就是罗马皇帝几次修改2、8等月份长短,以及儒列历中因计算不准确而人为地去掉了十天等事。中国农历也有因为古代天文观测不准确造成的 颁布的历法与天象不吻合的(我们不能苛求古人观测的精度)。所以这两部历法都是与一个时期社会有关的东西,也就没有一定的规律可循了。
农历转换公历对照表 是公历1945年4月29日 星期日
农历和公历是怎么转换的?(怎么算的?) 你是要口算还是要用笔算?
告诉你,这样子算不靠谱的,根本算不出来,涉及到的转换不是简单的几个公式能得出,相反,它的转换相当复杂。
如果有兴趣编写程序的,我可以提供转换函数库,调用一个函数就可以实现农历与公历的互转了。
目前我已经完美地实现了转换,如果需要,我可以提供。
日期转换为农历日期的算法是什么 excel公历转农历方法一:使用text函数 A列是公历日期,我们在B1单元格输入公式:=TEXT(A1,[$-130000]yyyy年m月&IF(LEN(--TEXT(A1,[$-130000]dd))=1,初,)&d),下拉完成公历转农历。
excel如何农历转换阳历公式 比如今天是2010年9月2日,用以下公式就可以得出农历七月二十四:
虽然在遇到闰月时,显示结果有点差强人意,如下图中,2010年2月9日的农历应是十二月二十六,但因为那年有个闰五月,就无辜多出来一个月了。不过总比编代码要快捷多了吧,而且闰月也不是天天有。
假如把公式改成:=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月)&TEXT(A2,IF(--TEXT(A2,[$-130000]d)=10,初十,IF(--TEXT(A2,[$-130000]d)>10,[$-130000][DBNum1]d,初[$-130000][DBNum1]d))),那就更像农历表示法了,不过因为农历每年开始日期都不一样,所以函数很难达到十分精确的结果,只能是将就着用。
实现阳历转阴历算法 下面是一个关于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) >
农历与阳历如何计算 阴历阳历转换计算公式
1、阳历日期推算阴历日期的方法:
前已述及阴历日期是以月亮的圆缺为计月单位,其以逢朔为初一,以月望为十五(大月为十六日),以月晦为二十九日(大月为三十日)。
如要知道1984年6月8日是阴历几日?可以利用公式推算阴历日期: 设:公元年数-1977(或1901)=4Q+R
则:阴历日期=14Q+106(R+1)+年内日期序数-295n (注:式中Q、R、n均为自然数,R>
在EXCEL中怎样把公历转换成农历 Dim WeekName(7), MonthAdd(11), NongliData(99), TianGan(9), DiZhi(11), ShuXiang(11), DayName(30), MonName(12)
Dim curTime, curYear, curMonth, curDay, curWeekday
Dim GongliStr, WeekdayStr, NongliStr, NongliDayStr
Dim i, m, n, k, isEnd, bit, TheDate
Private Sub Form_Load()
'获取当前系统时间
curTime = Now()
'星期名
WeekName(0) =
WeekName(1) = 星期日
WeekName(2) = 星期一
WeekName(3) = 星期二
WeekName(4) = 星期三
WeekName(5) = 星期四
WeekName(6) = 星期五
WeekName(7) = 星期六
'天干名称
TianGan(0) = 甲
TianGan(1) = 乙
TianGan(2) = 丙
TianGan(3) = 丁
TianGan(4) = 戊
TianGan(5) = 己
TianGan(6) = 庚
TianGan(7) = 辛
TianGan(8) = 壬
TianGan(9) = 癸
'地支名称
DiZhi(0) = 子
DiZhi(1) = 丑
DiZhi(2) = 寅
DiZhi(3) = 卯
DiZhi(4) = 辰
DiZhi(5) = 巳
DiZhi(6) = 午
DiZhi(7) = 未
DiZhi(8) = 申
DiZhi(9) = 酉
DiZhi(10) = 戌
DiZhi(11) = 亥
'属相名称
ShuXiang(0) = 鼠
ShuXiang(1) = 牛
ShuXiang(2) = 虎
ShuXiang(3) = 兔
ShuXiang(4) = 龙
ShuXiang(5) = 蛇
ShuXiang(6) = 马
ShuXiang(7) = 羊
ShuXiang(8) = 猴
ShuXiang(9) = 鸡
ShuXiang(10) = &q>>
如何把农历转成阳历,求算法 int lunarInfo[]={/阴历数据/
0x04bd8,0x04ae0,0570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
0x04ae0,05b6,04d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0da2,0x095b0,0x14977,
0x04970,04b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0950,0x0b557,
0x06ca0,0x0b550,0x15355,0x04da0,05d0,0x14573,0x052d0,09a8,0x0e950,0x06aa0,
0ea6,0b50,0x04b60,0ae4,0570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
0x096d0,0x04dd5,0x04ad0,04d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
0x095b0,0x049b0,0974,04b0,0x0b27a,0x06a50,0x06d40,0f46,0b60,0x09570,
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0b60,0x096d5,0x092e0,
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0bb7,0x025d0,0x092d0,0x0cab5,
0950,0x0b4a0,0x0baa4,0d50,0x055d9,0x04ba0,05b0,0x15176,0x052b0,0930,
0x07954,0x06aa0,0d50,0x05b52,0x04b60,06e6,04e0,0x0d260,0x0ea65,0x0d530,
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,04d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
0x0b5a0,0x056d0,0x055b2,0x049b0,0577,04b0,0a50,0x1b255,0x06d20,0da0};
int solarMonth[]={31,28,31,30,31,30,31,31,30,31,30,31};
---------------------------------------------------------------------------
int lYearDays(int y) {
int i, sum = 348;
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-190>>
直接给你整个工程吧,实现了星期计算、公历转农历、农历转公历、节气查询。非常不错的代码,你要的年份范围可以自己决定,支持从公元1600年到公元6400年的四千八百年数据。数据经过我精心设计的原创压缩算法压缩,体积非常小,效率很高。
密码:n51c (之前的不知啥原因被HX了,原创的都会被这样,鉴于需要的朋友很多,重新更换了链接)。
如果需要开发日历的完整开发包(支持更长年份),可私信。
#include <stdioh>
#include <windowsh>
/ 以公元阳历来计算(非农历) /
int _MONTH[]={{31},{28},{31},{30},{31},{30},{31},{31},{30},{31},{30},{31}};
int days(int m,int day)
{
int i,md=0;
unsigned int d;
for(i=0;i<(m-1)&&(i<11);i++)
md=md+_MONTH[i];
d=md+(day);
return (int)((d+365)-365);
}
void main()
{
int month,day;
RESET:
month=day=1;
printf("月份:");
scanf("%d",&month);
printf("日期:");
scanf("%d",&day);
while((month<1||month>12)||(day<1||day>31))
{
printf("月份或日期有误,请重新输入!\n");
fflush(stdin);
Sleep(3000);
goto RESET;
}
printf("今天是今年的第%d天\n",days(&month,&day));
}
月份与日期是用户输入接受来的,如果你想一运行就显示当前日期是今年的第几天。你可以使用timeh头文件里的有关函数来获取。获取后你只需将将强制转换为int型即可带入实参。具体如何获取网上有很多成熟的例子。
这个例子的实现原理与日历实现的原理一样:
如日历的原理如下截图:
万年历的c语言程序代码包括节假日农历,农历转公历,公历农历查询某 / 多格式万年历 1问题 设计程序实现多规格打印万年历,要求每一横排打印x个月 整数x可取1,2,3,4,6五个选项 2设计思路 设置两个数组:一维m数组存放月份的天数,如m(8)=31,即8月份为31天 二维d数组存放日号,如d(3,24)=11,即3月份第2个星期的星期4为11号 其中24分解为十位数字2与个位数字4,巧妙地利用二维数组存放了三维信息 输入年号y,m数组数据通过赋值完成。根据历法规定,平年二月份为28天; 若年号能被4整除且不被100整除,或能被400整除,该年为闰年,二月份为29天 则必须把m(2)改为29 同时,根据历法,设y年元旦是星期w(取值0-6,0为星期日),整数w的计算公式为 w={y+[(y-1)/4]-[(y-1)/100]+[(y-1)/400]}%7 []为取整。 元旦以后 ,每增加一天,w增1,当w=7时改为w=0即可。 设置三重循环i、j、k为d数组的d(i,j10+k)赋值。i:1-12,表示月份号;j:1-60 表示每个月约定最多6个星期;k;0-6,表示星期k。从元旦的a=1开始,每赋一个元素, a增1,同时w=k+1。当w=7时,w=0(为星期日)。当a>m(i)时,终止第i月的赋值 *** 作。 输入格式参数x(1,2,3,4,6),设置4重循环控制规格打印: n循环,n:1-12/x,控制打印12/x段(每一段x个月)。、 j循环,j:1-6,控制打印每月的6个星期(6行)。 i循环,i:t--t+x-1,控制打印每行x个月(从第t个月至t+x-1月,t=x(n-1)+1) k循环,k:0-6,控制打印每个星期的7天。 / #include #include void main() { int a,i,j,n,k,t,w,x,y,z; static int d[13][78]; int m[14]={0,31,28,31,30,31,30,31,31,30,31,30,31}; char wst[]=Sun Mon Tue Wed Thu Fri Sat; puts(Please enter the year: ); scanf(%d,&y); if(y%4==0&&y%100!=0||y%400==0)闰年的二月为29天 m[2]=29; w=(y+(y-1)/4-(y-1)/100+(y-1)/400)%7;计算y年元旦为星期w for(i=1;im[i]) break; } if(a>m[i]) break; } } puts>>
万年历19570615转换农历 这个简单,我翻了一下人生日历,是农历的1957年五月十八号,星期六,请采纳。
万年历阴历转阳历查询阴历19960815阳历是多少 19960927
只知阳历月份,不查万年历怎么换算阴历月份? 20分 这是祖先计时开始时往后累计的,阴历阳历都是一天一天加的,无法换算
excel如何农历转换阳历公式 比如今天是2010年9月2日,用以下公式就可以得出农历七月二十四:
虽然在遇到闰月时,显示结果有点差强人意,如下图中,2010年2月9日的农历应是十二月二十六,但因为那年有个闰五月,就无辜多出来一个月了。不过总比编代码要快捷多了吧,而且闰月也不是天天有。
假如把公式改成:=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月)&TEXT(A2,IF(--TEXT(A2,[$-130000]d)=10,初十,IF(--TEXT(A2,[$-130000]d)>10,[$-130000][DBNum1]d,初[$-130000][DBNum1]d))),那就更像农历表示法了,不过因为农历每年开始日期都不一样,所以函数很难达到十分精确的结果,只能是将就着用。
想用单片机设计一个万年历,如何实现阳历到农历的转换?最好是给出思路和相关程序。 10分
万年历阴历转阳历查询1939年阴历5月初2是阳历几月几号? 阳历:1939年6月18日 星期日 农历五月初二 己卯年 庚午月 丙戌日 兔年 双子座
万年历查询程序 C语言代码 除了天数差计算,基本上是完成了你所提出的功能(天数差计算其实已经提供了年内序数计算方方法,可以在此基础上完善即可)。包含星期计算、公历转农历、农历转公历、节气查询。数据与算法均为原创,绝非网上复制而来。附件中有源代码,同时附带农历数据提取工具,可提取1600到7000年之间的任意年份区间,提取后的数据为压缩数据,占用空间小,同时数据包含数九、三伏、入梅和出梅,非常适合写一份完整的万年历。
部分核心算法函数如下:
判断闰年,参数:年份,返回值:0-平年,1-闰年int IsLeapYear(int iYear);计算日期在年内的序数,参数:年,月,日,年内序数,返回值:0-失败,1-成功int GetDaysNumInYear(int iYear, int iMonth, int iDay,int nDays);从年内序数计算月、日,参数:年,年内序数,月,日,返回值:0-失败,1-成功int GetDateFromDays(int iYear, int nDays, int iMonth, int iDay);检验年、月、日的合法性,参数:年,月,日,返回值:0-失败,1-成功int DateCheck(int iYear,int iMonth,int iDay);获取农历新年的公历年内序数,参数:农历年,返回值:农历新年的公历年内序数int LunarGetNewYearOrdinal(int iLunarYear);获取农历月的天数,参数:农历年,农历月,是否为闰月,返回值:该农历月的天数,为0代表参数无效int LunarGetDaysofMonth(int iLunarYear,int iLunarMonth,int IsLeapMonth);展开大小月数据表(某一年的),参数:农历年,从上一年十一月开始到当前年份(闰)十二月的每月天数,返回值:0-失败,1-成功int LunarExpandDX(int iLunarYear,int iDayOfMonth[15]);获取农历某一年的闰月情况,参数:农历年,返回值,该年的闰月月份,0表示无闰月int LunarGetLeapMonth(int iLunarYear);公历转农历,参数:公历年、月、日,农历年、月、日,是否为闰月,返回值:0-失败,1-成功int Gongli2Nongli(int iYear,int iMonth,int iDay,int iLunarYear,int iLunarMonth,int iLunarDay,int iIsLeapMonth);农历转公历,参数:家历年、月、日,是否为闰月,公历年、月、日,返回值:0-失败,1-成功int Nongli2Gongli(int iLunarYear,int iLunarMonth,int iLunarDay,int iIsLeapMonth,int iYear,int iMonth,int iDay);得到指定年份的节气信息,首个是小寒int GetJieQi(int iYear,int uMonth,unsigned int uJieQi[2]);计算星期unsigned int GetDayOfWeek(int iYear,int u>>
vivo手机在日历中如何进行农历与公历互换查询 都写着呢,你换她干嘛。我也是vivo换不了
新历转农历 v凉了海冷了天:你好。2013年的农历8月8。
是阳历2013年09月12日
//天干
private static string[] TianGan = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };
//地支
private static string[] DiZhi = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };
//十二生肖
private static string[] ShengXiao = { "鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };
//农历日期
private static string[] DayName = {"","初一","初二","初三","初四","初五",
"初六","初七","初八","初九","初十",
"十一","十二","十三","十四","十五",
"十六","十七","十八","十九","二十",
"廿一","廿二","廿三","廿四","廿五",
"廿六","廿七","廿八","廿九","三十"};
//农历月份
private static string[] MonthName = { "", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "腊" };
//公历月计数天
private static int[] MonthAdd = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
//农历数据
private static int[] LunarData = {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};
/// <summary>
/// 获取对应日期的农历
/// </summary>
/// <param name="dtDay">公历日期</param>
/// <returns></returns>
public string GetLunarCalendar(DateTime dtDay)
{
string sYear = dtDayYearToString();
string sMonth = dtDayMonthToString();
string sDay = dtDayDayToString();
int year;
int month;
int day;
try
{
year = intParse(sYear);
month = intParse(sMonth);
day = intParse(sDay);
}
catch
{
year = DateTimeNowYear;
month = DateTimeNowMonth;
day = DateTimeNowDay;
}
int nTheDate;
int nIsEnd;
int k, m, n, nBit, i;
string calendar = stringEmpty;
//计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)
nTheDate = (year - 1921) 365 + (year - 1921) / 4 + day + MonthAdd[month - 1] - 38;
if ((year % 4 == 0) && (month > 2))
nTheDate += 1;
//计算天干,地支,月,日
nIsEnd = 0;
m = 0;
k = 0;
n = 0;
while (nIsEnd != 1)
{
if (LunarData[m] < 4095)
k = 11;
else
k = 12;
n = k;
while (n >= 0)
{
//获取LunarData[m]的第n个二进制位的值
nBit = LunarData[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 == 1)
break;
m = m + 1;
}
year = 1921 + m;
month = k - n + 1;
day = nTheDate;
//return year + "-" + month + "-" + day;
if (k == 12)
{
if (month == LunarData[m] / 65536 + 1)
month = 1 - month;
else if (month > LunarData[m] / 65536 + 1)
month = month - 1;
}
//年
calendar = year + "年";
//生肖
calendar += ShengXiao[(year - 4) % 60 % 12]ToString() + "年 ";
// //天干
calendar += TianGan[(year - 4) % 60 % 10]ToString();
// //地支
calendar += DiZhi[(year - 4) % 60 % 12]ToString() + " ";
//农历月
if (month < 1)
calendar += "闰" + MonthName[-1 month]ToString() + "月";
else
calendar += MonthName[month]ToString() + "月";
//农历日
calendar += DayName[day]ToString() + "日";
return calendar;
}
以上就是关于农历日历查询全部的内容,包括:农历日历查询、公历转换农历算法、万年历的c语言程序代码包括节假日农历,农历转公历,公历农历查询某等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)