Compare commits

...

5 Commits

File diff suppressed because it is too large Load Diff

@ -0,0 +1,213 @@
#ifndef LUNAR_H
#define LUNAR_H
#include <ctime>
#include <string>
#include <vector>
#include <map>
#include <string.h>
#include <stdlib.h>
#ifdef _WIN32
#include <windows.h>
#else
#include <sys/time.h>
#endif // _WIN32
typedef long long int INT64;
class Calendar
{
/*
* ********************************************************************
* ********************************************************************
* **
* ** 1.
* **
* ** 2. <>
* **
* ** 3. 1900-01-31 2098-12-31
* ** 寿
* **
* ** 4. 使使
* **
* ** 5.使
* **
* **
* ** -- by taynpg
* *********************************************************************
* *********************************************************************
*/
/*
* 使
* Calendar
* []使
*
* < SetSolarDate >
*/
/* 本程序的初始化入口函数 */
public:
// 录入公历日期(同一个对象可以反复调用),如果日期不合法,返回 false。
// 最后两个参数 分钟 秒钟 默认为 0可以不填写。若传入的日期当天有节气则可能会对结果有影响
// 若传入的日期当天没有节气,则对结果无影响、因此若日期当日有节气信息,建议传入精确时间。
bool SetSolarDate(int year, int month, int day, int hour, int min = 0, int second = 0);
/* 该部分是传入的内容 (用户主要使用的部分) */
public:
int solarYear = 0; // 公历年 4 位数字
int solarMonth = 0; // 公历月
int solarDay = 0; // 公历日
int solarHour = 0; // 公历小时
int solarMin = 0; // 公历分
int solarSecond = 0; // 公历秒
/* 该部分是计算出来的内容 (用户主要使用的部分) */
public:
int lunarYear = 0; // 农历年 4 位数字
int lunarMonth = 0; // 农历月
int lunarDay = 0; // 农历日
bool isBigMonth = false; // 农历的月 月大还是月小,(月大 30 天,月小 29 天)。
bool isLeapMonth = false; // 当前农历月是否为农历闰月
std::string lunarYearZhu = ""; // 年柱信息(两个字),如 甲子
std::string lunarMonthZhu = ""; // 月柱信息(两个字),如 甲子
std::string lunarDayZhu = ""; // 日柱信息(两个字),如 甲子
std::string lunarHourZhu = ""; // 时柱信息(两个字),如 甲子
std::string jieQiOne = ""; // 本月第一个节气信息,返回格式示例 04-04-清明-时间-13:12:44
std::string jieQiTwo = ""; // 本月第二个节气信息,返回格式示例 04-19-谷雨-时间-20:01:14
std::string shengxiaoyear = ""; // 生肖年
/* (本程序使用的接口, 用户也可使用,但用户需要自己判断输入的参数内容或格式是否合法) */
public:
Calendar();
~Calendar();
void Init(); // 初始化成员变量,因该函数需要反复调用,所以单独拿出来。
// 根据基准日期时间和相差的秒钟算 另一个日期 格式 YYYYMMDDHHMMSS ,相差秒钟分正(向前)负(向后)
std::string GetDateFromTimeDiffAndBase(const std::string &date, INT64 seconds);
// 返回一个公历日期的前一天的日期, 格式 YYYYMMDD未检查输入日期的合法性。
std::string GetPreDayFromDate(const std::string &date);
// 返回一个公历日期的后一天的日期, 格式 YYYYMMDD未检查输入日期的合法性。
std::string GetAfterDayFromDate(const std::string &date);
// 判断中间的日期是否在前后两个日期之间 格式 YYYYMMDDHHMMSS
bool IsDateBetweenAC(const std::string &one, const std::string &two, const std::string &three);
// 计算两个日期时间之间相差的秒数 参数为 YYYYMMDDHHMMSS
INT64 GetDateTimeDiffTwo(const std::string &one, const std::string &two);
// 返回两个时间点的秒数之差 参数都为 HHMMSS
int GetTimeDiffTwo(const std::string &one, const std::string &two);
// 判断是否是闰年
bool IsLeapYear(int year);
// 让月、日、时、分、秒为个数时首位加 0
std::string TurnWithZero(long num);
// 判断时间是否合法 HHMMSS
bool IsTimeLegal(const std::string &time);
// 判断日期时间是否合法 YYYYMMDDHHMMSS
bool IsDateTimeLegal(const std::string &dateTime);
// 判断公历是否合法 YYYYMMDD
bool IsSolarLegal(const std::string &date);
// 返回两个日期之间的天数差 参数为 YYYYMMDD
int GetDayDiffTwo(const std::string &one, const std::string &two);
// 返回距离 1900.1.1 的天数 格式 YYYYMMDD
int GetDayDiffFromBase(const std::string &date);
// 传入年月日给出标准 YYYYMMDD 格式
std::string GetStandardDate(int year, int month, int day);
// 传入标准 YYYYMMDD 格式,返回年月日
void GetDateFromStandardString(const std::string& datetime, int& year, int& month, int& day);
// 传入年月日时分秒给出标准 YYYYMMDDHHMMSS 格式
std::string GetStandardDateTime(int year, int month, int day, int hour, int min, int sec);
// 传入标准 YYYYMMDDHHMMSS 格式, 返回年月日时分秒
void GetDateTimeFromStandardString(const std::string &datetime, int &year, int &month, int &day, int &hour, int &min, int &sec);
// 传入时分秒给出标准 HHMMSS 格式
std::string GetStandardTime(int hour, int min, int sec);
// 传入标准 HHMMSS 时间格式返回时分秒
void GetTimeFromStandardString(const std::string time, int &hour, int &min, int &sec);
/* 本程序未使用但个人认为有用的函数 */
public:
// 获取当前系统日期时间,精确到毫秒 格式 YYYYMMDDHHMMSSMIL
std::string GetSysDateTimeMill();
// 返回一个时间到 00:00:00 的秒数 ,输入 HHMMSS
int GetMiaoDiffToZero(const std::string &time);
// 根据日期 YYYYMMDD 返回这一天是星期几 0-周日, 1-周一 以此类推
int GetWeekIndexFromDate(const std::string &date);
//根据年份 返回这一年是哪个生肖年
int Getzodiacyear(int year);
/* 表 */
public:
std::map<int, std::string> sixtyJiazi; // 序号->查60甲子
std::map<std::string, int> sixtyJiaziIndex; // 60甲子->序号
std::map<std::string, int> jieQiInfo; // 节气信息->序号
std::map<int, std::string> jieQiInfoIndex; // 序号->节气信息
std::vector<std::string> tianGan; // 天干信息表
std::vector<std::string> diZhi; // 地支信息表
std::vector<std::string> shengxiao; //十二生肖
/* 表 */
public:
std::vector<int> lunarInfo; // 查表法的农历信息表
int* times = NULL; // 各节气之间相差的秒数(精确数据,用于计算节气的具体时间)
std::map<std::string, std::string> wuHu; // 五虎遁年起月表
std::map<std::string, std::string> qiShi; // 日上起时法表
/* 主要是本程序使用 */
public:
std::string getJiazi(int num); // 传入 offset 返回干支, 0=甲子
// 将格式为 【04-04-清明-时间-13:12:44】的字符串转成 YYYYMMDDHHMMSS 标准格式,节气名称保存到 jieQi 中
std::string getJieQiStandardTime(int year, const std::string& time, std::string& jieQi);
// 对于纯中文(注意不能字符和中文夹杂)的 substr (参数num 为该字符串有几个中文汉字)
std::string zhSubstr(const std::string& data, int num, size_t start, size_t length);
// 对 num 取余jinZhi 为基数num 支持负数,结果在 [0, jinZhi-1]内
int getRemainder(int num, int jinZhi);
/* 主要是本程序使用 */
public:
int getLunarYearDays(int year); // 返回农历 y 年的总天数
int getLunarLeapDays(int year); // 返回农历 y 年闰月的天数
int getLunarLeapMonth(int year); // 返回农历 y 年闰哪个月 1-12 , 没闰返回 0
int getLunarMonthDays(int year, int month); // 返回农历 y 年 m 月的总天数
int getLunarSTerm(int year, int n, std::string& result); // 某年的第 n 个节气为几日 (从0小寒起算)
void getYearMonthZhu(); // 计算农历年的 年柱、月柱 (以立春为新年)
void getHourZhu(); // 计算时柱 (该函数要在计算年柱月柱之后执行)
// 给出某年某月的年柱、月柱、返回上一个月的年柱、月柱。并指出所给月份是否是含立春的月份。
std::string getPreMonthYearMothZhu(const std::string &yearZhu, const std::string &monthZhu, bool isLiChun);
// 传入公历的年、月、此月的节气、此月的月柱、此年柱 -> 获取该节气的下一个节气的 年、月、节气、月柱、年柱(YYYYMMXXPPYY)
void getNexJieQiInfo(int &year, int &month, std::string &jieQi, std::string &monthZhu, std::string &yearZhu);
// 给出年柱,返回下一年的起始月柱, 格式 XX
std::string getNextYearYearMonthZhu(const std::string &yearZhu);
// 字符串分割
void SplitString(const std::string &data, std::string splitString, std::vector<std::string> &result);
};
#endif // LUNAR_H

@ -0,0 +1,549 @@
#include "calendar.h"
#include "gtest/gtest.h"
TEST(blaTeat, test1){
Calendar* m_calendar = new Calendar;
Calendar* test = new Calendar;
m_calendar->SetSolarDate(2111, 11, 29, 20, 01, 10);
m_calendar->SetSolarDate(1888, 11, 29, 20, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 100);
m_calendar->SetSolarDate(2021, 11, 29, 230, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 23, 01, 10);
m_calendar->SetSolarDate(2020, 4, 29, 23, 01, 10);
m_calendar->SetSolarDate(2020, 5, 29, 23, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 10);
std::cout << "农历年:" << m_calendar->lunarYear << std::endl;
std::cout << "农历月:" << m_calendar->lunarMonth << std::endl;
std::cout << "农历日:" << m_calendar->lunarDay << std::endl;
std::cout << "年干支:" << m_calendar->lunarYearZhu << std::endl;
std::cout << "月干支:" << m_calendar->lunarMonthZhu << std::endl;
std::cout << "日干支:" << m_calendar->lunarDayZhu << std::endl;
std::cout << "时干支:" << m_calendar->lunarHourZhu << std::endl;
std::cout << "当月节气一:" << m_calendar->jieQiOne << std::endl;
std::cout << "当月节气二:" << m_calendar->jieQiTwo << std::endl;
EXPECT_EQ(365,m_calendar->getLunarYearDays(2021));
EXPECT_EQ(28,m_calendar->getLunarLeapDays(2020));
EXPECT_EQ(12,m_calendar->getLunarLeapMonth(2020));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("19000106020357",-10));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("19000106020357",900000));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("",1000));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20220101"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20220228"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20200229"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20211231"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20211229"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211229"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211201"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211101"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20210301"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200301"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200101"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200100"));
EXPECT_EQ(false,m_calendar->IsTimeLegal(""));
EXPECT_EQ(false,m_calendar->IsTimeLegal("2400000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("240000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("236100"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("230061"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("-30000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("00-300"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("0000-3"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20200230"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202002-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210230"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202102-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210333"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202103-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202104-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210433"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18040301"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000101"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000401"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18001101"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000201"));
EXPECT_EQ("1",m_calendar->GetSysDateTimeMill());
EXPECT_EQ(false,m_calendar->IsDateBetweenAC("20000101","20000102","20000103"));
EXPECT_EQ(false,m_calendar->IsDateBetweenAC("20000101","19990101","19990102"));
EXPECT_EQ(1,m_calendar->GetWeekIndexFromDate(""));
EXPECT_EQ(1,m_calendar->GetWeekIndexFromDate("1880001"));
m_calendar->getYearMonthZhu();
std::string a = "";
EXPECT_EQ("1",m_calendar->getPreMonthYearMothZhu("", "", false));
EXPECT_EQ("1",m_calendar->getPreMonthYearMothZhu("", "", true));
EXPECT_EQ("1",m_calendar->GetStandardTime(20, 20, 20));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->getRemainder(1,50));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->GetDateTimeDiffTwo("",""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("20210129"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("202112310"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("20210830"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetPreDayFromDate("20210101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->GetWeekIndexFromDate("1880001"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetDateFromTimeDiffAndBase("20200202020202",1000));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsDateTimeLegal("231654894984651484"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsDateTimeLegal(""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal(""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("123456789"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200201"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200301"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200401"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200501"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200601"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200701"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200801"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200901"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201001"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201201"));
test->SetSolarDate(2100, 1, 1, 20, 01, 10);
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->GetDateTimeDiffTwo("20200202020202020", "2020020202020202");
test->GetDateTimeDiffTwo("2020020202020202", "20200202020202020");
test->GetDateTimeDiffTwo("", "2020020202020202");
test->GetDateTimeDiffTwo("2020020202020202", "");
test->IsSolarLegal("20201300");
test->IsSolarLegal("20200000");
test->IsSolarLegal("20200202");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsDateTimeLegal("20201300250000");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsSolarLegal("20210230");
test->IsSolarLegal("20210200");
test->IsSolarLegal("20210215");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsTimeLegal("212020");
test->IsTimeLegal("212060");
test->IsTimeLegal("2120-1");
m_calendar->SetSolarDate(2111, 11, 29, 20, 01, 10);
m_calendar->SetSolarDate(1888, 11, 29, 20, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 100);
m_calendar->SetSolarDate(2021, 11, 29, 230, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 23, 01, 10);
m_calendar->SetSolarDate(2020, 4, 29, 23, 01, 10);
m_calendar->SetSolarDate(2020, 5, 29, 23, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 10);
std::cout << "农历年:" << m_calendar->lunarYear << std::endl;
std::cout << "农历月:" << m_calendar->lunarMonth << std::endl;
std::cout << "农历日:" << m_calendar->lunarDay << std::endl;
std::cout << "年干支:" << m_calendar->lunarYearZhu << std::endl;
std::cout << "月干支:" << m_calendar->lunarMonthZhu << std::endl;
std::cout << "日干支:" << m_calendar->lunarDayZhu << std::endl;
std::cout << "时干支:" << m_calendar->lunarHourZhu << std::endl;
std::cout << "当月节气一:" << m_calendar->jieQiOne << std::endl;
std::cout << "当月节气二:" << m_calendar->jieQiTwo << std::endl;
EXPECT_EQ(365,m_calendar->getLunarYearDays(2021));
EXPECT_EQ(28,m_calendar->getLunarLeapDays(2020));
EXPECT_EQ(12,m_calendar->getLunarLeapMonth(2020));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("19000106020357",-10));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("19000106020357",900000));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("",1000));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20220101"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20220228"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20200229"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20211231"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20211229"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211229"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211201"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211101"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20210301"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200301"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200101"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200100"));
EXPECT_EQ(false,m_calendar->IsTimeLegal(""));
EXPECT_EQ(false,m_calendar->IsTimeLegal("2400000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("240000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("236100"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("230061"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("-30000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("00-300"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("0000-3"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20200230"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202002-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210230"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202102-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210333"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202103-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202104-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210433"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18040301"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000101"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000401"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18001101"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000201"));
EXPECT_EQ("1",m_calendar->GetSysDateTimeMill());
EXPECT_EQ(false,m_calendar->IsDateBetweenAC("20000101","20000102","20000103"));
EXPECT_EQ(false,m_calendar->IsDateBetweenAC("20000101","19990101","19990102"));
EXPECT_EQ(1,m_calendar->GetWeekIndexFromDate(""));
EXPECT_EQ(1,m_calendar->GetWeekIndexFromDate("1880001"));
m_calendar->getYearMonthZhu();
EXPECT_EQ("1",m_calendar->getPreMonthYearMothZhu("", "", false));
EXPECT_EQ("1",m_calendar->getPreMonthYearMothZhu("", "", true));
EXPECT_EQ("1",m_calendar->GetStandardTime(20, 20, 20));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->getRemainder(1,50));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->GetDateTimeDiffTwo("",""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("20210129"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("202112310"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("20210830"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetPreDayFromDate("20210101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->GetWeekIndexFromDate("1880001"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetDateFromTimeDiffAndBase("20200202020202",1000));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsDateTimeLegal("231654894984651484"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsDateTimeLegal(""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal(""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("123456789"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200201"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200301"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200401"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200501"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200601"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200701"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200801"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200901"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201001"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201201"));
test->SetSolarDate(2100, 1, 1, 20, 01, 10);
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->GetDateTimeDiffTwo("20200202020202020", "2020020202020202");
test->GetDateTimeDiffTwo("2020020202020202", "20200202020202020");
test->GetDateTimeDiffTwo("", "2020020202020202");
test->GetDateTimeDiffTwo("2020020202020202", "");
test->IsSolarLegal("20201300");
test->IsSolarLegal("20200000");
test->IsSolarLegal("20200202");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsDateTimeLegal("20201300250000");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsSolarLegal("20210230");
test->IsSolarLegal("20210200");
test->IsSolarLegal("20210215");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsTimeLegal("212020");
test->IsTimeLegal("212060");
test->IsTimeLegal("2120-1");
m_calendar->SetSolarDate(2111, 11, 29, 20, 01, 10);
m_calendar->SetSolarDate(1888, 11, 29, 20, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 100);
m_calendar->SetSolarDate(2021, 11, 29, 230, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 23, 01, 10);
m_calendar->SetSolarDate(2020, 4, 29, 23, 01, 10);
m_calendar->SetSolarDate(2020, 5, 29, 23, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 10);
std::cout << "农历年:" << m_calendar->lunarYear << std::endl;
std::cout << "农历月:" << m_calendar->lunarMonth << std::endl;
std::cout << "农历日:" << m_calendar->lunarDay << std::endl;
std::cout << "年干支:" << m_calendar->lunarYearZhu << std::endl;
std::cout << "月干支:" << m_calendar->lunarMonthZhu << std::endl;
std::cout << "日干支:" << m_calendar->lunarDayZhu << std::endl;
std::cout << "时干支:" << m_calendar->lunarHourZhu << std::endl;
std::cout << "当月节气一:" << m_calendar->jieQiOne << std::endl;
std::cout << "当月节气二:" << m_calendar->jieQiTwo << std::endl;
EXPECT_EQ(365,m_calendar->getLunarYearDays(2021));
EXPECT_EQ(28,m_calendar->getLunarLeapDays(2020));
EXPECT_EQ(12,m_calendar->getLunarLeapMonth(2020));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("19000106020357",-10));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("19000106020357",900000));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("",1000));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20220101"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20220228"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20200229"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20211231"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20211229"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211229"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211201"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211101"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20210301"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200301"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200101"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200100"));
EXPECT_EQ(false,m_calendar->IsTimeLegal(""));
EXPECT_EQ(false,m_calendar->IsTimeLegal("2400000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("240000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("236100"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("230061"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("-30000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("00-300"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("0000-3"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20200230"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202002-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210230"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202102-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210333"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202103-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202104-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210433"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18040301"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000101"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000401"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18001101"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000201"));
EXPECT_EQ("1",m_calendar->GetSysDateTimeMill());
EXPECT_EQ(false,m_calendar->IsDateBetweenAC("20000101","20000102","20000103"));
EXPECT_EQ(false,m_calendar->IsDateBetweenAC("20000101","19990101","19990102"));
EXPECT_EQ(1,m_calendar->GetWeekIndexFromDate(""));
EXPECT_EQ(1,m_calendar->GetWeekIndexFromDate("1880001"));
m_calendar->getYearMonthZhu();
EXPECT_EQ("1",m_calendar->getPreMonthYearMothZhu("", "", false));
EXPECT_EQ("1",m_calendar->getPreMonthYearMothZhu("", "", true));
EXPECT_EQ("1",m_calendar->GetStandardTime(20, 20, 20));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->getRemainder(1,50));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->GetDateTimeDiffTwo("",""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("20210129"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("202112310"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("20210830"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetPreDayFromDate("20210101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->GetWeekIndexFromDate("1880001"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetDateFromTimeDiffAndBase("20200202020202",1000));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsDateTimeLegal("231654894984651484"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsDateTimeLegal(""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal(""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("123456789"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200201"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200301"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200401"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200501"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200601"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200701"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200801"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200901"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201001"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201201"));
test->SetSolarDate(2100, 1, 1, 20, 01, 10);
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->GetDateTimeDiffTwo("20200202020202020", "2020020202020202");
test->GetDateTimeDiffTwo("2020020202020202", "20200202020202020");
test->GetDateTimeDiffTwo("", "2020020202020202");
test->GetDateTimeDiffTwo("2020020202020202", "");
test->IsSolarLegal("20201300");
test->IsSolarLegal("20200000");
test->IsSolarLegal("20200202");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsDateTimeLegal("20201300250000");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsSolarLegal("20210230");
test->IsSolarLegal("20210200");
test->IsSolarLegal("20210215");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsTimeLegal("212020");
test->IsTimeLegal("212060");
test->IsTimeLegal("2120-1");
m_calendar->SetSolarDate(2111, 11, 29, 20, 01, 10);
m_calendar->SetSolarDate(1888, 11, 29, 20, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 100);
m_calendar->SetSolarDate(2021, 11, 29, 230, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 23, 01, 10);
m_calendar->SetSolarDate(2020, 4, 29, 23, 01, 10);
m_calendar->SetSolarDate(2020, 5, 29, 23, 01, 10);
m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 10);
std::cout << "农历年:" << m_calendar->lunarYear << std::endl;
std::cout << "农历月:" << m_calendar->lunarMonth << std::endl;
std::cout << "农历日:" << m_calendar->lunarDay << std::endl;
std::cout << "年干支:" << m_calendar->lunarYearZhu << std::endl;
std::cout << "月干支:" << m_calendar->lunarMonthZhu << std::endl;
std::cout << "日干支:" << m_calendar->lunarDayZhu << std::endl;
std::cout << "时干支:" << m_calendar->lunarHourZhu << std::endl;
std::cout << "当月节气一:" << m_calendar->jieQiOne << std::endl;
std::cout << "当月节气二:" << m_calendar->jieQiTwo << std::endl;
EXPECT_EQ(365,m_calendar->getLunarYearDays(2021));
EXPECT_EQ(28,m_calendar->getLunarLeapDays(2020));
EXPECT_EQ(12,m_calendar->getLunarLeapMonth(2020));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("19000106020357",-10));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("19000106020357",900000));
EXPECT_EQ("1",m_calendar->GetDateFromTimeDiffAndBase("",1000));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20220101"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20220228"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20200229"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20211231"));
EXPECT_EQ("1",m_calendar->GetAfterDayFromDate("20211229"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211229"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211201"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20211101"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20210301"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200301"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200101"));
EXPECT_EQ("1",m_calendar->GetPreDayFromDate("20200100"));
EXPECT_EQ(false,m_calendar->IsTimeLegal(""));
EXPECT_EQ(false,m_calendar->IsTimeLegal("2400000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("240000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("236100"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("230061"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("-30000"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("00-300"));
EXPECT_EQ(false,m_calendar->IsTimeLegal("0000-3"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20200230"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202002-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210230"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202102-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210333"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202103-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("202104-1"));
EXPECT_EQ(false,m_calendar->IsSolarLegal("20210433"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18040301"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000101"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000401"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18001101"));
EXPECT_EQ(1,m_calendar->GetDayDiffFromBase("18000201"));
EXPECT_EQ("1",m_calendar->GetSysDateTimeMill());
EXPECT_EQ(false,m_calendar->IsDateBetweenAC("20000101","20000102","20000103"));
EXPECT_EQ(false,m_calendar->IsDateBetweenAC("20000101","19990101","19990102"));
EXPECT_EQ(1,m_calendar->GetWeekIndexFromDate(""));
EXPECT_EQ(1,m_calendar->GetWeekIndexFromDate("1880001"));
m_calendar->getYearMonthZhu();
EXPECT_EQ("1",m_calendar->getPreMonthYearMothZhu("", "", false));
EXPECT_EQ("1",m_calendar->getPreMonthYearMothZhu("", "", true));
EXPECT_EQ("1",m_calendar->GetStandardTime(20, 20, 20));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->getRemainder(1,50));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->GetDateTimeDiffTwo("",""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("20210129"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("202112310"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetAfterDayFromDate("20210830"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetPreDayFromDate("20210101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(1,test->GetWeekIndexFromDate("1880001"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ("1",test->GetDateFromTimeDiffAndBase("20200202020202",1000));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsDateTimeLegal("231654894984651484"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsDateTimeLegal(""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal(""));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("123456789"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200201"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200301"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200401"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200501"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200601"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200701"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200801"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20200901"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201001"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201101"));
test->SetSolarDate(2021, 11, 29, 20, 01, 10);
EXPECT_EQ(false,test->IsSolarLegal("20201201"));
test->SetSolarDate(2100, 1, 1, 20, 01, 10);
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->GetDateTimeDiffTwo("20200202020202020", "2020020202020202");
test->GetDateTimeDiffTwo("2020020202020202", "20200202020202020");
test->GetDateTimeDiffTwo("", "2020020202020202");
test->GetDateTimeDiffTwo("2020020202020202", "");
test->IsSolarLegal("20201300");
test->IsSolarLegal("20200000");
test->IsSolarLegal("20200202");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsDateTimeLegal("20201300250000");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsSolarLegal("20210230");
test->IsSolarLegal("20210200");
test->IsSolarLegal("20210215");
test->SetSolarDate(1990, 5, 1, 20, 01, 10);
test->IsTimeLegal("212020");
test->IsTimeLegal("212060");
test->IsTimeLegal("2120-1");
delete m_calendar;
m_calendar = nullptr;
delete test;
test = nullptr;
}

@ -0,0 +1,21 @@
cpp = calendar_test.cpp calendar.cpp
build:
g++ -fprofile-arcs -ftest-coverage -fno-exceptions $(cpp) -o test -lgtest -lgtest_main -lpthread
test:clean build
./test
lcov:test-calendar_test.gcda
lcov -c -d . -o test.info --rc lcov_branch_coverage=1
genhtml:lcov
genhtml test.info -o ./output --branch-coverage
all:genhtml
firefox output/index.html
clean:
rm -rf output *.gcno *.gcda *.gcov

@ -0,0 +1,25 @@
#include "calendar.h"
#include <iostream>
int main()
{
Calendar* m_calendar = new Calendar;
if (m_calendar->SetSolarDate(2021, 11, 29, 20, 01, 10))
{
std::cout << "农历年:" << m_calendar->lunarYear << std::endl;
std::cout << "农历月:" << m_calendar->lunarMonth << std::endl;
std::cout << "农历日:" << m_calendar->lunarDay << std::endl;
std::cout << "年干支:" << m_calendar->lunarYearZhu << std::endl;
std::cout << "月干支:" << m_calendar->lunarMonthZhu << std::endl;
std::cout << "日干支:" << m_calendar->lunarDayZhu << std::endl;
std::cout << "时干支:" << m_calendar->lunarHourZhu << std::endl;
std::cout << "当月节气一:" << m_calendar->jieQiOne << std::endl;
std::cout << "当月节气二:" << m_calendar->jieQiTwo << std::endl;
}
delete m_calendar;
m_calendar = nullptr;
return 0;
}
Loading…
Cancel
Save