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は別個の式であり、1つに新しい算術演算を追加しても、他の式には影響しません。

代わりにオフセットを適用し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 に答える