time_t
C標準では秒単位で測定する必要がないため、最初の答えは移植可能であるとは限りません。
time_t
ただし、 は実数型であるため、算術演算を行うことができます。これにより、それを行うためのルートが得られます。struct tm
2 秒間隔で設定できます。
struct tm first;
struct tm second;
time_t ts_first;
time_t ts_second;
double sec_diff;
first.tm_year = 100;
first.tm_mon = 0;
first.tm_mday = 2;
first.tm_hour = 1;
first.tm_minute = 20;
first.tm_second = 20;
first.tm_isdst = -1;
second.tm_year = 100;
second.tm_mon = 0;
second.tm_mday = 2;
second.tm_hour = 1;
second.tm_minute = 20;
second.tm_second = 21;
second.tm_isdst = -1;
それらをtime_t
値に変換します。
ts_first = mktime(&first);
if ( ts_first == -1 ) {
/* Do your error checking */
}
ts_second = mktime(&second);
if ( ts_second == -1 ) {
/* Do your error checking */
}
彼らに電話difftime()
してください:
sec_diff = difftime(ts_second, ts_first);
次に、必要なsec_diff
秒数を掛けて、 によって返される値からそれを引くことができますtime
。
もちろん、利用可能なシステムの時間分解能が 1 秒を超える場合、これは機能しませんtm_min
。代わりに分を探しているので、メンバーを変更してみることができますが、これはほとんどありません。