公历农历c语言,c语言阳历转阴历

excesselementsinchararrayinitializer的意思是:在char数组初始化时,设置了多余的元素。如:

constcharChDay[]={//这里定义的是一个一维字符数组,并进行初始化,一维数组的元素只能是单个的字符,而下面的数据却是字符串,所以,在编译时会报错误。

};

正确的代码应该为:

constchar*ChDay[]={//定义一个字符串数组(字符指针数组),其元素为字符串(字符指针)

或,定义成二维数组,因一个汉字最多占三个字节,初始化数据中,最长的只有两个汉字,所以,可以进行如下定义:

constcharChDay[][7]={//列宽最大为7(两个汉字加一个字符串结束符)

DimWeekName(7),MonthAdd(11),NongliData(99),TianGan(9),DiZhi(11),ShuXiang(11),DayName(30),MonName(12)

DimcurTime,curYear,curMonth,curDay,curWeekday

DimGongliStr,WeekdayStr,NongliStr,NongliDayStr

Dimi,m,n,k,isEnd,bit,TheDate

PrivateSubForm_Load()

curTime=Now()

MonthAdd(0)=0

MonthAdd(1)=31

MonthAdd(2)=59

MonthAdd(3)=90

MonthAdd(4)=120

MonthAdd(5)=151

MonthAdd(6)=181

MonthAdd(7)=212

MonthAdd(8)=243

MonthAdd(9)=273

MonthAdd(10)=304

MonthAdd(11)=334

NongliData(0)=2635

NongliData(1)=333387

NongliData(2)=1701

NongliData(3)=1748

NongliData(4)=267701

NongliData(5)=694

NongliData(6)=2391

NongliData(7)=133423

NongliData(8)=1175

NongliData(9)=396438

NongliData(10)=3402

NongliData(11)=3749

NongliData(12)=331177

NongliData(13)=1453

NongliData(14)=694

NongliData(15)=201326

NongliData(16)=2350

NongliData(17)=465197

NongliData(18)=3221

NongliData(19)=3402

NongliData(20)=400202

NongliData(21)=2901

NongliData(22)=1386

NongliData(23)=267611

NongliData(24)=605

NongliData(25)=2349

NongliData(26)=137515

NongliData(27)=2709

NongliData(28)=464533

NongliData(29)=1738

NongliData(30)=2901

NongliData(31)=330421

NongliData(32)=1242

NongliData(33)=2651

NongliData(34)=199255

NongliData(35)=1323

NongliData(36)=529706

NongliData(37)=3733

NongliData(38)=1706

NongliData(39)=398762

NongliData(40)=2741

NongliData(41)=1206

NongliData(42)=267438

NongliData(43)=2647

NongliData(44)=1318

NongliData(45)=204070

NongliData(46)=3477

NongliData(47)=461653

NongliData(48)=1386

NongliData(49)=2413

NongliData(50)=330077

NongliData(51)=1197

NongliData(52)=2637

NongliData(53)=268877

NongliData(54)=3365

NongliData(55)=531109

NongliData(56)=2900

NongliData(57)=2922

NongliData(58)=398042

NongliData(59)=2395

NongliData(60)=1179

NongliData(61)=267415

NongliData(62)=2635

NongliData(63)=661067

NongliData(64)=1701

NongliData(65)=1748

NongliData(66)=398772

NongliData(67)=2742

NongliData(68)=2391

NongliData(69)=330031

NongliData(70)=1175

NongliData(71)=1611

NongliData(72)=200010

NongliData(73)=3749

NongliData(74)=527717

NongliData(75)=1452

NongliData(76)=2742

NongliData(77)=332397

NongliData(78)=2350

NongliData(79)=3222

NongliData(80)=268949

NongliData(81)=3402

NongliData(82)=3493

NongliData(83)=133973

NongliData(84)=1386

NongliData(85)=464219

NongliData(86)=605

NongliData(87)=2349

NongliData(88)=334123

NongliData(89)=2709

NongliData(90)=2890

NongliData(91)=267946

NongliData(92)=2773

NongliData(93)=592565

NongliData(94)=1210

NongliData(95)=2651

NongliData(96)=395863

NongliData(97)=1323

NongliData(98)=2707

NongliData(99)=265877

curYear=Year(curTime)

curMonth=Month(curTime)

curDay=Day(curTime)

If(curMonth10)Then

Else

EndIf

If(curDay10)Then

curWeekday=Weekday(curTime)

WeekdayStr=WeekName(curWeekday)

If((curYearMod4)=0AndcurMonth2)Then

TheDate=TheDate+1

isEnd=0

m=0

Do

If(NongliData(m)4095)Then

k=11

k=12

n=k

If(n0)Then

ExitDo

bit=NongliData(m)

Fori=1TonStep1

bit=Int(bit/2)

Next

bit=bitMod2

If(TheDate=29+bit)Then

isEnd=1

Loop

If(isEnd=1)Then

m=m+1

curYear=1921+m

curDay=TheDate

If(k=12)Then

If(curMonth=(Int(NongliData(m)/65536)+1))Then

ElseIf(curMonth(Int(NongliData(m)/65536)+1))Then

If(curMonth1)Then

NongliDayStr=MonName(curMonth)

NongliDayStr=NongliDayStrDayName(curDay)

MsgBoxNongliStrNongliDayStr

EndSub

我刚好有资源,这是我原创的程序,里面的数据压缩方式、转换、参考点等,都是自行设计的,能够准确地将公历转农历,将农历转公历,同时还提供一个自行设计的农历库,附带例程,还有农历信息提取工具,可以自定义年份区间(1600-7000)。

农历信息提取器生成的头文件(这里限于篇幅,只取10年跨度)

/*****************************************************

*农历信息(查表方式)*

*****************************************************/

#ifndef_LUNARDATA_H

#define_LUNARDATA_H

#defineSTART_YEAR1600//定义数据起始年份(公历)

#defineEND_YEAR1610//定义数据终止年份(不包含该年)

shortiPreLeapIndex=-1;//起始年份以前的农历闰月索引,对应iPreMonth中的序号,如果是-1则代表无闰月。

//从起始年份前一年的农历十月开始,每月初一对应在起始年份中的年内序数,

//序数小于零代表起始年份之前。

shortiPreMonth[3]={-44,-15,15};

//每年农历正月初一的日期在公历年内的序数(年内序数指定元旦为0)。

unsignedcharuLunarNewYearOrdinal[10]={

44,33,22,41,30,48,37,27,46,34//1600-1609

//月份大小数组,从“START_YEAR”的正月到“END_YEAR”前一年的(闰)十二月。

//每年十二或十三个月用两个字节表示,最高两位定为10,后面从正月开始到十二月,包含闰月。月份小的在前,

//100或1xxxxxxxxxxxxx

//1012个月为0,13个月为1从正月到十二月,月份天数29天则为0,月份天数30天则为1。

//注意,如果没有闰月,月份位为12位,总长度是15位,有闰月,月份位为13位,总长度是16位。

unsignedshortLunarMonthDX[10]={

0x4A5D,0x492D,0xB92B,0x4A95,0xB695,0x46AA,0x4AD5,0xAAB5,0x44BA,0x4A5B//1600-1609

//闰月数组,用4位表示一个农历年内的闰月信息,一个字节表示相邻两年。

//xxxxxxxx

//年份①年份②

unsignedcharLeapMonth[5]={

0x00,0x20,0x90,0x06,0x00//1600-1609

//24节气数组,一年用12个字节表示,即每个月用一个字节(注意:此压缩算法适用于公元1600以后的数据)。

//如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

//小寒大寒立春雨水惊蛰春分清明谷雨立夏小满芒种夏至小暑大暑立秋处暑白露秋分寒露霜降立冬小雪大雪冬至

//这样每月两个节气对应数据都小于16,每月用一个字节存放,高位存放第一个节气数据,低位存放第二个节气的数据,可得下表:

unsignedcharSolarTerms[120]={

0x96,0x96,0x87,0x97,0x87,0x97,0x87,0x96,0x96,0x96,0x96,0x96,//1600

0xA6,0xA5,0x87,0x87,0x87,0x87,0x87,0x97,0x96,0x97,0x96,0x96,//1601

0x96,0xA5,0x88,0x87,0x88,0x87,0x87,0x87,0x96,0x87,0x96,0x97,//1602

0x96,0xA6,0x78,0x87,0x78,0x87,0x88,0x87,0x97,0x87,0x96,0x87,//1603

0x96,0x96,0x87,0x97,0x87,0x97,0x87,0x96,0x96,0x96,0xA6,0x96,//1604

0xA6,0xA5,0x87,0x87,0x87,0x87,0x87,0x97,0x96,0x96,0x96,0x96,//1605

0x96,0xA5,0x88,0x87,0x88,0x87,0x87,0x87,0x96,0x87,0x96,0x97,//1606

0x96,0xA5,0x78,0x87,0x78,0x87,0x88,0x87,0x97,0x87,0x96,0x87,//1607

0x96,0x96,0x87,0x97,0x87,0x96,0x87,0x96,0x96,0x96,0xA6,0x96,//1608

0xA6,0xA5,0x87,0x87,0x87,0x87,0x87,0x97,0x96,0x96,0x96,0x96//1609

//每年数九、入梅、出梅及三伏日期(以该年元旦为基准)。

//公历年内首个是三九(适用于公元1600年以后)。

//数组中,每一行表示一年,四九、五九……省略,输在每个九相差9天,同理二九省略,中伏在初伏后10天。分别对应如下(括号中的已省略):

//三九(四九五九六九七九八九九九)入梅出梅初伏(中伏)末伏一九(二九),注意:一九就是冬至。

unsignedshortExtermSeason[60]={

8,165,190,199,219,355,7,159,196,193,223,355,//1600-1601

7,164,191,198,218,355,8,159,198,193,223,355,//1602-1603

8,164,193,198,218,355,7,158,199,202,222,355,//1604-1605

7,163,194,197,227,355,8,158,189,202,222,355,//1606-1607

8,163,196,197,227,355,7,167,190,201,221,354//1608-1609

#endif//_LUNARDATA_H

其实很简单,你的程序中定义一些数组,保存一些重要参数即可,下面是JAVASCRIPT的,看懂了你就可以用C来写:

varlunarInfo=newArray(

0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,

0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,

0x04970,0x0a4b0,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,0x0a950,0x0b557,

0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,

0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,

0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,

0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,

0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,

0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,

0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,

0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,

0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,

0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0)

//======================================传回农历y年的总天数

functionlYearDays(y){

vari,sum=348

for(i=0x8000;i0x8;i=1)sum+=(lunarInfo[y-1900]i)1:0

return(sum+leapDays(y))

}

//======================================传回农历y年闰月的天数

functionleapDays(y){

if(leapMonth(y))return((lunarInfo[y-1900]0x10000)30:29)

elsereturn(0)

//======================================传回农历y年闰哪个月1-12,没闰传回0

functionleapMonth(y){

return(lunarInfo[y-1900]0xf)

//======================================传回农历y年m月的总天数

functionmonthDays(y,m){

return((lunarInfo[y-1900](0x10000m))30:29)

直接给你整个工程吧,实现了星期计算、公历转农历、农历转公历、节气查询。非常不错的代码,你要的年份范围可以自己决定,支持从公元1600年到公元6400年的四千八百年数据。数据经过我精心设计的原创压缩算法压缩,体积非常小,效率很高。

密码:n51c(之前的不知啥原因被HX了,原创的都会被这样,鉴于需要的朋友很多,重新更换了链接)。

如果需要开发日历的完整开发包(支持更长年份),可私信。

THE END
1.万年历查询日历查询农历查询农历日历老黄历万年历表中华万年历 本机时间2024-12-0223:59:26 2024-12-0215:59:26 格林威治标准时间https://qq.ip138.com/day/
2.中国农历年份,rpa,机器人,自动化日历网万年历_日历网1 天前?·?日历网提供的万年历主要包含万年历查询表,万年历1900-2099年日历,还有一些相关查询,如:阴阳历转换,生辰八字查询,生日查星座等功能。更多内容请查看https://www.rili.com.cn/wannianli/ 至此千百年来,中国传统历——汉历(农历)所采用得干支纪年方法,与皇帝年号纪年一样以新年https://wdlinux.cn/html/zonghe/20241128/20015.html
3.农历转换农历 十一月大 初一日甲辰年 乙亥月 己亥日 壬申时回历(伊斯兰历)1446年5月29日 朔14:21 公元年月大 公元2024年 农历甲辰年(龙年) 日 一 二 三 四 五 六 1●十一月大 2初二 3初三 4初四 5初五 6大雪 7初七 8初八 9初九 10初十 11十一 12十二 13十三 14十四 15○十五 16十六 17十七 18十八 19https://www.gcti.edu.cn/time/Cal.htm
4.农历是阴历还是阳历转换农历俗称阴历,但实际上是由于农历本身含有节气概念,所以农历是阴阳合历,取月相的变化周期即朔望月为月的长度,参考太阳回归年为年的长度,通过设置二十四节气以及闰月以使平均历年与回归年相适应。农历和阳历没有确定的转换公式,但是可以通过查找万年历进行转换。农历和http://m.15tqc.com/show1048661/
5.国历和农历怎么转换6、国历与农历的换算公式 求教高人!!! 你指的是公历与农历的换算公式吧?这个算法复杂,我可以提供C或C++的API函数给你,不知道你是用什么语言来编的? 7、转换农历国历 网友分享:你好,国历1997.13,转换为农历是1997年1月7日,星星期四;国历1997.1,转换为农历是1996年12月24日,星期六。 https://www.105188.com/sh/618011.html
6.身份证农历日期计算法生日揭秘农历转换身份证10月12日对应的农历日期,揭秘农历生日计算法_身份证 农历日期 计算法 生日揭秘 农历转换_易学品鉴http://m.emotion123456.com/tags-62138.html
7.用C#编写19002100年阴历阳历转换程序本人在学习C#编程的过程中,通过使用天文台公布的1900-2100年阴历大小月数据,参考网站大神的案例,将其内置入程序中。运行程序,即可查询1900至2100年间任意一天的农历及干支。输入8位日期如“20240801”即可查询,如直接输入1900至2100间的4位年份数字,则显示当年一年的公历农历清单对照清单。 https://blog.csdn.net/Aleck6364/article/details/144155038
8.日历算法原理日历算法原理的内容摘要:一、公历转换农历的算法公历(GregorianCalendar)与农历(ChineseLunarCalendar)的转换关系不是一个简单的公式就可以完成,其中的转换比较复杂,原因是农历的制定相当复杂,是根据天文观测进行指定的。比较常https://m.360docs.net/doc/b215809652.html
9.asp公历转农历asp公历转农历公历转农历js*这里就是农历转换表的数据,每100一更新 DATA: BEGIN OF R_NONGLIDATA, NAME TYPE I, END OF R_NONGLIDATA *这里输入日期,是公历日期 PARAMETER P_DATUM LIKE SY-DATUM . START-OF-https://cloud.tencent.com/developer/information/asp%20%E5%85%AC%E5%8E%86%E8%BD%AC%E5%86%9C%E5%8E%86
10.免费阴历阳历转换在线工具网(zxgj.cn)阴阳历换算,农历是中国的一种传统历法,又称夏历,民间也称阴历,经常有问题农历是阴历还是阳历?农历就是阴历,阴历阳历转换在线工具提供两种历法之间的转换算法。https://www.zxgj.cn/g/yinyangli
11.阳历转化成农历法.docxC++中怎样将阳历转化成农历已关闭20[标签:C++,阳历,农历]小A角、2011-05-0311:06推荐答案一、原理篇公历转换农历的算法公历(GregorianCalendar)与农历(ChineseLunarCalendar)的转换关系不是一个简单的公式就可以完成,其中的转换比较复杂,原因是农历的制定相当复杂,是根据天文观测进行指定的。比较常用并且比较简单的公历转https://m.renrendoc.com/paper/308154963.html
12.一种公历到农历日期转换算法的实现郑丽丽谢磊李清宝一种公历到农历日期转换算法的实现 摘要 本文主要从单片机软件实现角度介绍一种公历到农历转换的算法思想,算法采用MCS-51指令系统实现。并给出程序流程图,另外对二十四节气和生肖算法也做详细介绍。 著录项https://www.zhangqiaokeyan.com/academic-journal-cn_microcomputer-information_thesis/0201243212509.html
13.阳历与农历转换的算法,,CIO之家阳历与农历转换的算法 下面是一个关于VB的农历算法 '日期数据定义方法如下 '前12个字节代表1-12月为大月或是小月,1为大月30天,0为小月29天; '第13位为闰月的情况,1为大月30天,0为小月29天; '第14位为闰月的月份,如果不是闰月为0,否则给出月份,10、11、12分别用A、B、C来表示,即使用16进制;http://km.ciozj.com/Detail.aspx?AI=48791
14.一种公历到农历日期转换算法的实现本文主要从单片机软件实现角度介绍一种公历到农历转换的算法思想, 算法采用MCS-51 指令系统实现。并给出程序流程图,另外对二十四节气和生肖的算法也做详细介绍。关键词:单片机;MCS-51 指令系统Abstract: This paper introduces the realization and algorithm of the transform between Gregorian calendar and lunar https://m.elecfans.com/article/39160.html
15.python实现的阳历转阴历(农历)算法Flex公历转农历算法 Flex公历转换成农历的类(参考C++版本)。 使用方式: new ChineseDate(new Date()).date 输出公历日期对应的农历格式。 上传者:liu_you时间:2009-12-25 Python实现公历(阳历)转农历(阴历)的方法示例 本文实例讲述了Python实现公历(阳历)转农历(阴历)的方法。分享给大家供大家参考,具体如下: 两https://www.iteye.com/resource/weixin_38721119-13777616
16.公历转换农历的算法(JavaScript).docx公历转换农历的算法(JavaScript).docx 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 阴历阳历转换using using using using using using using using using using using namespace { { { Main(System.DateTime.Now); GetChunJie(2006); } Web Form Designer generated code { { { // // /https://max.book118.com/html/2021/1207/8101016141004052.shtm
17.java新历转农历mob649e816347dd的技术博客农历是中国传统的历法,也被称为阴阳历或旧历。与公历(也称为阳历或新历)不同,农历基于月相和太阳运行周期来计算日期。在Java中,我们可以使用一些算法和库来将公历日期转换为农历日期。本文将介绍如何使用Java实现新历转农历的功能。 1. 公历和农历的区别 https://blog.51cto.com/u_16175495/6889573
18.公历农历的转换器理想股票技术论坛转换公历和农历日期,简单易用的日历转换工具。 公历农历转换计算公式详解:如何准确进行日期转换 [股票软件指标公式技术交流] 贺志辉 2024-8-4 相关标签:公历农历转换计算方法 农历和公历转换公式 公历和农历转换日期 农历与公历转换算法 公历农历的转换器 阅读106 回复0 赞0 https://www.55188.com/tag-thread-9104980-1.html