私は時間を使って多くの計算を行っており、秒を追加することで他の時間オブジェクトに相対的な時間オブジェクトを構築しています。コードは、組み込みデバイスとサーバーで実行されることになっています。ほとんどのドキュメンテーションはtime_t
、それが何らかの算術型であり、通常はエポックからの時間を格納していると述べています。time_t
何かからの秒数を保存すると仮定するのはどれほど安全ですか? それを仮定できれば、 、 、 ではなく、足し算と引き算を使用localtime
できmktime
ますdifftime
。
これまでのところ、が秒constexpr bool time_tUsesSeconds
を使用すると仮定しても安全かどうかを示す を使用して問題を解決しました。time_t
秒単位であると想定するのが移植性がない場合time_t
、その定数を自動的に初期化する方法はありますか?
time_t timeByAddingSeconds(time_t theTime, int timeIntervalSeconds) {
if (Time_tUsesSeconds){
return theTime + timeIntervalSeconds;
} else {
tm timeComponents = *localtime(&theTime);
timeComponents.tm_sec += timeIntervalSeconds;
return mktime(&timeComponents);
}
}