开发过程中有时候需要进行有关日期的计算,比如计算3个月前的日期,计算60天后的日期,计算两年前的日期等。自己算起来非常麻烦,难免有疏漏。
利用tm结构体和time_t,可以轻松地准确地计算这些日期。程序如下:
#include <iostream>
#include <time.h>
void PrintTime(tm tmp_time)
{
printf("%04d_%02d_%02d\n", tmp_time.tm_year + 1900, tmp_time.tm_mon + 1, tmp_time.tm_mday);
}
int main(int argc, char* argv[])
{
//当前时间
time_t tm_time = time(0);
tm current_time = *localtime(&tm_time);
PrintTime(current_time);
//十八个月前的时间
tm tmp_time = current_time;
tmp_time.tm_mon -= 18;
time_t time_label = mktime(&tmp_time);
tmp_time = *localtime(&time_label);
PrintTime(tmp_time);
//六十天前的时间
tmp_time = current_time;
tmp_time.tm_mday -=60;
time_label = mktime(&tmp_time);
tmp_time = *localtime(&time_label);
PrintTime(tmp_time);
//一百八十天后的时间
tmp_time = current_time;
tmp_time.tm_mday += 180;
time_label = mktime(&tmp_time);
tmp_time = *localtime(&time_label);
PrintTime(tmp_time);
return 0;
}