1

我正在尝试编写一个函数,该函数接受一个参数,即偏移天数,并返回从现在起许多偏移天的日期。我可以从下面轻松获取当前日期

#include <ctime>
#include <iostream>
using namespace std;

int main() {
time_t t = time(0);   // get time now
struct tm * now = localtime( & t );
cout << (now->tm_year + 1900) << '-' 
     << (now->tm_mon + 1) << '-'
     <<  now->tm_mday
     << endl;
}

我的问题是,如果我将 now->tm_mday 更改为 now->tm_mday - offset,是否足够聪明地更改月份或年份,因为它们可能会发生变化。

4

1 回答 1

2

不 - (now->tm_year + 1900)(now->tm_mon + 1)并且now->tm_mday是单独的表达式,向其中添加新的算术运算不会影响其他表达式。

t相反,应用偏移量,它是一个整数值,表示自 UNIX 纪元以来的秒数。然后更改将传递到tm结构,并最终传递到您的每个输出表达式:

time_t t0 = time(0);               // now
time_t t1 = time(0) - 5;           // five seconds ago
time_t t2 = time(0) - 60*60*2;     // two hours ago
time_t t3 = time(0) - 60*60*24*5;  // five days ago

// (do try to avoid "magic numbers", though)
于 2013-02-01T22:19:19.827 回答