首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

最近用C++写关于日期类的一系列函数,可是想破了头也不知道怎么实现以下函数的功能,望亲们指导一下

2013-11-08 
最近用C++写关于日期类的一系列函数,可是想破了头也不知道如何实现以下函数的功能,望亲们指导一下const MY

最近用C++写关于日期类的一系列函数,可是想破了头也不知道如何实现以下函数的功能,望亲们指导一下

const MYDATE a(2009, 5, 1);
MYDATE r1, r2;
r1 = a.Add(7); r2 = a.Add(-7);
cout << "r1 = "; r1.Output(); cout << endl;
cout << "r2 = "; r2.Output(); cout << endl;
r1 = a.Sub(7); r2 = a.Sub(-7);
cout << "r1 = "; r1.Output(); cout << endl;
cout << "r2 = "; r2.Output(); cout << endl;

要求运行结果为:
r1 = 2009-05-08
r2 = 2009-04-24
r1 = 2009-04-24
r2 = 2009-05-08
const MYDATE a(2009, 5, 1), b(2009, 6, 1);
int m, n;
m = r1.Sub(r2); n = r2.Sub(r1);
cout << "m = " << m << endl;
cout << "n = " << n << endl;

要求运行结果为:
m = -31
n = 31

我自己写的类是这样的
class MYDATE{
public:
const static int td1y;//1年总天数
const static int td4y;//4年总天数
const static int td100y;//100年总天数
const static int td400y;//400年总天数
const static char dom[12];//月天数
const static short tdom[12];//月累计天数
const static char* const dowName[7];//星期名称
// 星期显示控制标志(默认值false-不显示)
static bool dowFlag;
static int Noly(int year);//闰年数
static int Dom(int year, int month);//当月天数
static int Dow(int year, int month, int day);//求星期
static int Tdoy(int year, int month, int day);//当年天数
static long TotalDays(int year, int month, int day);//求总天数
static bool IsLeap(int year);//判断闰年
static bool IsValid(int year, int month, int day);//判断日期有限性
MYDATE(int year, int month, int day);
void TotalDays(int totaldays);
int TotalDays()const;
int Tdoy()const;
int Dow()const;
void Set(int, int, int);//设置日期
void Get(int&, int&, int&)const;//读取日期
void Year(int);//设置年
int Year()const;//读取年
void Month(int);
int Month()const;
void Day(int);
int Day()const;
void Output() const;
private:
int year, month, day;
};


求解怎么编写Add函数和Sub函数以完成运行结果那样的功能,急!万分感激! 类 C++
[解决办法]
YYYY年MM月DD日→从1970年1月1日到YYYY年MM月DD日的总天数→加或减指定天数→yyyy年mm月ff日
[解决办法]
引用:
YYYY年MM月DD日→从1970年1月1日到YYYY年MM月DD日的总天数→加或减指定天数→yyyy年mm月ff日

time_t ctm = time(NULL);//For system Timer missing or false.
struct tm *ttm = localtime(&ctm);
sprintf(fname, "%s%c%09d-%d-%d-%d.txt", rdir, dsc, tip->tid, tip->sid, pf->ft_cid, pf->fpp);
if (NULL != (h=fopen(fname, "w")))
{
sprintf(fname, "%d-%d-%d %02d:%02d:%02d", 
ttm->tm_year+1900, ttm->tm_mon+1, ttm->tm_mday, ttm->tm_hour, ttm->tm_min, ttm->tm_sec);

copy项目中的一段代码,其中有部分关于日期操作的,利用c++自带的函数完成可以实现年元日各自的加减。

热点排行