最短比較ソリューションをすべての文字列タイムスタンプをtime_t値に変換することです。
ソースをBrian McFarlandとして改善すると、memset()
が示唆されます。
struct tm tmVar;
time_t t_on_time, t_off_time, t_curr_time;
memset(&tmVar, 0, sizeof(tmVar));
if(sscanf(on_time, "%d:%d:%d", &tmVar.tm_hour, &tmVar.tm_min, &tmVar.tm_sec)==3) {
t_on_time = mktime(&tmVar);
}
memset(&tmVar, 0, sizeof(tmVar));
if(sscanf(off_time, "%d:%d:%d", &tmVar.tm_hour, &tmVar.tm_min, &tmVar.tm_sec)==3) {
t_off_time = mktime(&tmVar);
}
memset(&tmVar, 0, sizeof(tmVar));
if(sscanf(CURTIME(), "%d:%d:%d", &tmVar.tm_hour, &tmVar.tm_min, &tmVar.tm_sec)==3) {
t_curr_time = mktime(&tmVar);
}
そして、あなたの比較は次のとおりです。
if (((t_on_time <= t_off_time) && (t_curr_time >= t_on_time) && (t_curr_time <= t_off_time)) ||
((t_off_time < t_on_time) && ((t_curr_time <= t_off_time) || (t_curr_time >= t_on_time))) {
// To do something
}
もし 'off_time = 01:00:00あなたはoff_time' 1時今朝に'設定するのですか、次の日ですか? – chux