网站首页 > 文章中心 > 其它

公历转农历函数c语言

作者:小编 更新时间:2023-10-21 13:03:09 浏览量:269人看过

c语言中关于农历阳历转换问题 excess elements in char array initializer

excess elements in char array initializer 的意思是:在char数组初始化时,设置了多余的元素.如:

公历转农历函数c语言-图1

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

"","初一","初二","初三","初四","初五",

"初六","初七","初八","初九","初十",

"十一","十二","十三","十四","十五",

"十六","十七","十八","十九","二十",

"廿一","廿二","廿三","廿四","廿五",

"廿六","廿七","廿八","廿九","三十"

};

正确的代码应该为:

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

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

C++计算农历日期的问题

农历实在不知道的话,我可以帮你解决.请问你需要什么样的要求?

//判断闰年,参数:年份,闰年,返回值:FALSE-失败,TRUE-成功

BOOL?IsLeapYear(WORD?dwYear,BOOL?bLeapYear);

//计算日期在年内的序数,参数:年,月,日,年内序数,返回值:FALSE-失败,TRUE-成功

BOOL?GetDaysNumInYear(WORD?dwYear,?WORD?dwMonth,?WORD?dwDay,WORD?nDays);

//从年内序数计算月、日,参数:年,年内序数,月,日,返回值:FALSE-失败,TRUE-成功

BOOL?GetDateFromDays(WORD?dwYear,?WORD?nDays,?WORD?dwMonth,?WORD?dwDay);

//获取农历新年的公历年内序数,参数:农历年,返回值:农历新年的公历年内序数

short?LunarGetNewYearOrdinal(WORD?dwLunarYear);

//获取农历月的天数,参数:农历年,农历月,是否为闰月,返回值:该农历月的天数,为0代表参数无效

WORD?LunarGetDaysofMonth(WORD?dwLunarYear,WORD?dwLunarMonth,BOOL?bLeapMonth);

//获取农历某一年的闰月情况,参数:农历年,返回值,该年的闰月月份,0表示无闰月

WORD?LunarGetLeapMonth(WORD?dwLunarYear);

//公历转农历,参数:公历年、月、日,农历年、月、日,是否为闰月,返回值:FALSE-失败,TRUE-成功

BOOL?GetLunar(WORD?dwYear,WORD?dwMonth,WORD?dwDay,WORD?dwLunarYear,WORD?dwLunarMonth,WORD?dwLunarDay,BOOL?bLeapMonth);

//农历转公历,参数:家历年、月、日,是否为闰月,公历年、月、日,返回值:FALSE-失败,TRUE-成功

BOOL?GetGregorian(WORD?dwLunarYear,WORD?dwLunarMonth,WORD?dwLunarDay,BOOL?bLeapMonth,WORD?dwYear,WORD?dwMonth,WORD?dwDay);

//得到指定年份的节气信息,首个是小寒

//计算星期,返回-1表示输入的年月日不正确或者超出年份范围

short?GetDayOfWeek(WORD?dwYear,WORD?dwMonth,WORD?dwDay);

//计算某个月的天数,返回天数,如果返回0表示年或月有误

WORD?GetDaysOfMonth(WORD?dwYear,WORD?dwMonth);

以上列举了一些转换函数,详情请见附件的例子,虽然是C语言的,但可以参考或者直接转换成C++,有任何问题可追问或私信,保证帮你解决.

请问谁有阳历阴历的转换算法,用C语言编程的,谢谢

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) = "星期日"

'天干名称

TianGan(0) = "甲"

TianGan(1) = "乙"

'地支名称

DiZhi(0) = "子"

DiZhi(1) = "丑"

DiZhi(10) = "戌"

DiZhi(11) = "亥"

'属相名称

ShuXiang(0) = "鼠"

ShuXiang(1) = "牛"

ShuXiang(10) = "狗"

ShuXiang(11) = "猪"

'农历日期名

DayName(0) = "*"

DayName(1) = "初一"

DayName(10) = "初十"

DayName(11) = "十?quot;"

'农历月份名

MonName(0) = "*"

MonName(1) = "正"

MonName(10) = "十"

MonName(11) = "十一"

'公历每月前面的天数

MonthAdd(0) = 0

'农历数据

'生成当前公历年、月、日 == GongliStr

curYear = Year(curTime)

curMonth = Month(curTime)

curDay = Day(curTime)

GongliStr = curYear "年"

If (curMonth 10) Then

GongliStr = GongliStr "0" curMonth "月"

Else

GongliStr = GongliStr curMonth "月"

End If

If (curDay 10) Then

GongliStr = GongliStr "0" curDay "日"

GongliStr = GongliStr curDay "日"

'生成当前公历星期 == WeekdayStr

curWeekday = Weekday(curTime)

WeekdayStr = WeekName(curWeekday)

TheDate = TheDate + 1

'计算农历天干、地支、月、日

isEnd = 0

m = 0

Do

k = 11

n = k

If (n 0) Then

Exit Do

'获取NongliData(m)的第n个二进制位的值

bit = NongliData(m)

For i = 1 To n Step 1

Next

isEnd = 1

n = n - 1

Loop

If (isEnd = 1) Then

m = m + 1

curMonth = k - n + 1

curDay = TheDate

curMonth = 1 - curMonth

curMonth = curMonth - 1

'生成农历天干、地支、属相 == NongliStr

'生成农历月、日 == NongliDayStr

If (curMonth 1) Then

NongliDayStr = "闰" MonName(-1 * curMonth)

NongliDayStr = MonName(curMonth)

NongliDayStr = NongliDayStr "月"

NongliDayStr = NongliDayStr DayName(curDay)

MsgBox NongliStr NongliDayStr

End Sub

c++中怎样将阳历转化成农历

第一段: 原理篇

①.. 公历转换农历的算法

公历(Gregorian Calendar)与农历(Chinese Lunar Calendar)的转换关系不是一个简单的公式就可以完成,其中的转换比较复杂,原因是农历的制定相当复杂,是根据天文观测进行指定的.

下面就是公历转换成农历的具体算法:

(1) 计算所求时间到起始年正月初一的天数.

天干有十个,就是甲、乙、丙、丁、戊、己、庚、辛、壬、癸,地支有十二个,依次是子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥.古人把它们按照一定的顺序而不重复地搭配起来,从甲子到癸亥共六十对,叫做六十甲子.我国古人用这六十对干支来表示年、月、日、时的序号,周而复始,不断循环,这就是干支纪法.

0甲子

①.乙丑

①.1乙亥

本C++类中实现二十四节气的计算,使用的是平节气的简单算法.用数组sTermInfo记录从小寒开始的各个节气相对于小寒所经历的分钟数,并用int sTerm(int y, int n)函数得到某年y的第n个节气为所在月的第几日(n从0小寒起算).由于没有考虑岁差与章动,所以精确度不是很高.

用C语言怎么将公历日期转化为农历日期?

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

var lunarInfo=new Array(

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

function lYearDays(y) {

return(sum+leapDays(y))

}

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

function leapDays(y) {

else return(0)

function leapMonth(y) {

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

function monthDays(y,m) {

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章