万年历程序查询 要求:提供菜单方式选择 输入年份,月份,日期,计算得到的是

2024-11-22 22:51:24
推荐回答(1个)
回答(1):

你这是要什么语言的?我这里有C版本的,当然C++版本也是可以改出来的。包含了农历与节气,基本上能满足你的要求,如果需要,可以追问,源码奉上,另外,我还有个C/C++的农历库,专门为万年历设计,集成了很实用的功能,用起来非常方便。以下是类的声明:

class CLunar 
{
public:
 virtual long Int(double dDays) const=0;
 virtual bool GetDayOrdinal(LONGTIME LongTime,int iYear,double &dDays)=0;
 virtual bool GetDateFromOrdinal(int iYear,double dDays,LONGTIME &LongTime)=0;
 virtual bool GetEasterSunday(int iYear,unsigned short &wMonth,unsigned short &wDay)=0;
 virtual bool GetConstellation(int iYear,unsigned short wMonth,unsigned short wDay,unsigned short &wConstellationIndex)=0;
 virtual bool GetGanZhi(LONGTIME LongTime,GANZHI &GanZhi,bool bYStartLiChun=false)=0;
 virtual bool GetGregorian(LUNARDATE LunarDate,LONGTIME &LongTime)=0;
 virtual bool GetLunar(LONGTIME LongTime,LUNARDATE &LunarDate)=0;
 virtual bool GetLunarMonthInfo(int iYear,LUNARMONTH &MonthInfo)=0;
 virtual bool GetLunarPhase(int iYear,unsigned short wMonth,LUNARPHASE &LunarPhase)=0;
 virtual bool GetSolarTerms(int iYear,SOLARTERMS &SolarTerms)=0;
 virtual bool IsLeapYear(int iYear,bool &bLeapYear)=0;
 virtual bool GetExtremeSeason(int iYear,EXTREMESEASON &ExtremeSeason)=0;
 virtual bool GetSheRi(int iYear,SHERI &SheRi)=0;
 virtual bool GetFengLong(int iYear,unsigned short &wFengLong)=0;
 virtual bool GetDays(LONGTIME LongTime1,LONGTIME LongTime2,double &dDays)=0;
 virtual bool GetDate(LONGTIME LongTime,double dDays,LONGTIME &DstLongTime)=0;
 virtual bool InitTimeStructure(LONGTIME &LongTime,bool bCurrentTime,int iYear=2000,unsigned short wMonth=1,unsigned short wDay=1,unsigned short wHour=0,unsigned short wMinute=0,unsigned short wSecond=0,unsigned short wMilliSecond=0)=0;
 virtual bool GetDayOfWeek(int iYear,unsigned short wMonth,unsigned short wDay,unsigned short &wDayOfWeek)=0;
 virtual bool GetEmperorReign(LONGTIME longtime,char *pBuffer,unsigned int BufSize)=0;
 virtual unsigned short GetDaysOfMonth(int iYear,unsigned short wMonth)=0;
 virtual unsigned short GetDaysOfYear(int iYear)=0;
 virtual unsigned short GetLeapMonth(int iYear)=0;
 virtual unsigned short GetDaysOfLunarMonth(int iLunarYear,unsigned short wLunarMonth,bool bLeapMonth)=0;
 virtual unsigned short GetDaysOfLunarYear(int iLunarYear)=0;
 virtual LONGTIME SysTimeToLong(SYSTEMTIME SystemTime) const=0;
 virtual SYSTEMTIME LongTimeToSys(LONGTIME LongTime) const=0;
 virtual int Release()=0;
protected:
 CLunar(void);
 virtual ~CLunar(void);
};