展开全部
我这里特地为你写了个C++的,看看是不是你所要的。代码实现了公历转农历,农历转公历,以下是类的定义(整个工程源代码请看附件):
class CTransform
{
public:
CTransform(void);
virtual ~CTransform(void);
private:
//判断闰年,参数:年份,返回值:false-平年,true-闰年
bool IsLeapYear(int iYear);
//计算日期在年内的序数,参数:年,月,日,年内序数,返回值:false-失败,true-成功
bool GetDaysNumInYear(int iYear, int iMonth, int iDay,int &nDays);
//从年内序数计算月、日,参数:年,年内序数,月,日,返回值:false-失败,true-成功
bool GetDateFromDays(int iYear, int nDays, int &iMonth, int &iDay);
//检验年、月、日的合法性,参数:年,月,日,返回值:false-失败,true-成功
bool DateCheck(int iYear,int iMonth,int iDay);
//获取农历新年的公历年内序数,参数:农历年,返回值:农历新年的公历年内序数
int LunarGetNewYearOrdinal(int iLunarYear);
//获取农历月的天数,参数:农历年,农历月,是否为闰月,返回值:该农历月的天数,为0代表参数无效
int LunarGetDaysofMonth(int iLunarYear,int iLunarMonth,bool IsLeapMonth);
//展开大小月数据表(某一年的),参数:农历年,从上一年十一月开始到当前年份(闰)十二月的每月天数,返回值:0-失败,1-成功
int LunarExpandDX(int iLunarYear,int iDayOfMonth[15]);
//获取农历某一年的闰月情况,参数:农历年,返回值,该年的闰月月份,0表示无闰月
int LunarGetLeapMonth(int iLunarYear);
public:
//公历转农历,参数:公历年、月、日,农历年、月、日,是否为闰月,返回值:false-失败,true-成功
bool Gongli2Nongli(int iYear,int iMonth,int iDay,int &iLunarYear,int &iLunarMonth,int &iLunarDay,bool &iIsLeapMonth);
//农历转公历,参数:农历年、月、日,是否为闰月,公历年、月、日,返回值:false-失败,true-成功
bool Nongli2Gongli(int iLunarYear,int iLunarMonth,int iLunarDay,bool iIsLeapMonth,int &iYear,int &iMonth,int &iDay);
};
以下是运行效果
其中年份区间可以自定,这里只为演示而取200年跨度,年份区间在1600年到6999年,使用提取工具(附件中有)提取农历信息。提取的数据进行了压缩,可移植到单片机。
AiPPT
2024-09-19 广告
2024-09-19 广告
作为北京饼干科技有限公司的工作人员,关于AIPPT免费生成PPT的功能,我可以简要介绍如下:AIPPT是一款基于人工智能技术的PPT制作工具,它为用户提供了免费生成PPT的便捷服务。用户只需简单输入PPT的主题或内容大纲,AIPPT便能智能...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询