2011-11-08 8 views
0

私はC++を新しくしていますので、より流暢に日付を扱うためのライブラリがあるかどうかは疑問です。C++の日付に日を追加する

私はかなり普通の仕事をしています。私はさまざまな価値の開始日を持っており、日数を乱数で増やすと、どのような日になるのかを知る必要があります。

mktimetime_tオブジェクトの継ぎ目が私がしようとしているものに役立つと考えました。彼らが答えであれば誰かが私に良いガイドへのリンクを与えることができますか?

答えて

1

で解析可能なことができたstruct tmに変換するmktime & localtimeを使用することができますtime_tにそれを追加して、など新しいtime_tを得ることができます。あなたのコンパイラが十分に新しいものであれば、C++ 11 chrono名前空間があります。

0

私は自分の関数を書いて、日、月、年を既存のDATEクラスに追加しました。私はまだそれをテストすることができませんでしたが、多分それは役立ちます:

bool DATE::add(int Day, int Month, int Year){ 
int DaysPerMonth[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 
this -> Day += Day; 
while(this -> Day > DaysPerMonth[ this-> Month ]){ 
    if((this -> Year % 4 == 0 && this -> Year % 100 != 0) || this -> Year % 400 == 0){ 
     DaysPerMonth[2] = 29; 
    } 
    this -> Day -= DaysPerMonth[ this-> Month ]; 
    this -> Month++; 
    if(this -> Month > 12){ 
     this -> Month = 1; 
     this -> Year++; 
    } 
} 
this -> Month = (this -> Month + (Month % 12)); 
this -> Year = (this -> Year + Year + (Month/12)); 
if((this -> Year % 4 == 0 && this -> Year % 100 != 0) || this -> Year % 400 == 0){ 
    DaysPerMonth[2] = 29; 
    // check pathologic case wether date is 1 of March and added Year targets switchyear 
    if(this -> Day == 1 && this -> Month == 3){    
     this -> Day = 29; 
     this -> Month = 2; 
    } 
} 
if(this -> Month < 1 || this -> Month > 12 || this -> Day < 1 || this -> Day > DaysPerMonth[this->Month]){ 
    valid = false; 
    cerr << "something went wrong, calculated Date is: " << this -> Day << "."<< this -> Month << "." << this -> Year << endl << flush; 
    return false; 
}else{ 
    return true; 
} 

}

関連する問題