これが私の現在の状況です:
- 2 つの tm 構造体があり、どちらも現在の時刻に設定されています
- 構造体の 1 つで時間を変更します。
- 変更は魔法のように他の構造体で発生しています....
- これが発生しないようにするにはどうすればよいですか? 2 つの異なる時間 (現在の時間と未来の時間) の秒数を比較して知る必要があります。これを判断するために difftime と mktime を使用しています。技術的には 2 つの tm 構造体が必要ないことは認識していますが (もう 1 つの構造体は、生の時間が読み込まれた time_t である可能性があります)、なぜこれが発生するのかを理解したいと思っています。
void Tracker::monitor(char* バッファ){
// time handling
time_t systemtime, scheduletime, currenttime;
struct tm * dispatchtime;
struct tm * uiuctime;
double remainingtime;
// let's get two structs operating with current time
dispatchtime = dispatchtime_tm();
uiuctime = uiuctime_tm();
// set the scheduled parameters
dispatchtime->tm_hour = 5;
dispatchtime->tm_min = 05;
dispatchtime->tm_sec = 14;
uiuctime->tm_hour = 0;
// both of these will now print the same time! (0:05:14)
// what's linking them??
// print the scheduled time
printf ("Current Time : %2d:%02d:%02d\n", uiuctime->tm_hour, uiuctime->tm_min, uiuctime->tm_sec);
printf ("Scheduled Time : %2d:%02d:%02d\n", dispatchtime->tm_hour, dispatchtime->tm_min, dispatchtime->tm_sec);
}
struct tm* Tracker::uiuctime_tm(){
time_t uiucTime;
struct tm *ts_uiuc;
// give currentTime the current time
time(&uiucTime);
// change the time zone to UIUC
putenv("TZ=CST6CDT");
tzset();
// get the localtime for the tz selected
ts_uiuc = localtime(&uiucTime);
// set back the current timezone
unsetenv("TZ");
tzset();
// set back our results
return ts_uiuc;
}
struct tm* Tracker::dispatchtime_tm(){
time_t currentTime;
struct tm *ts_dispatch;
// give currentTime the current time
time(¤tTime);
// get the localtime for the tz selected
ts_dispatch = localtime(¤tTime);
// set back our results
return ts_dispatch;
}