2015-06-24 5 views
0

Хорошо, поэтому я экспериментирую с time.h, то, что я пытаюсь сделать, это создать локальное время и сравнить его с заданным временем (triggerTime). Простое звучание, но на самом деле, я уверен, что я не инициализировал свой time_t trigTime должным образом, потому что, когда я вызываю printf («В тоне время будет:% s», ctime (trigTime)); он возвращает Wen Dec 31 1969, а не дату, которую я установил. В чем проблема? Более того, как я могу взять triggerTime и инициализировать struct * tm с ним, а затем сравнить его с localTimeInfo?C/C++ time.h, неправильное время распечатывать, сравнение раз

#include <stdio.h> 
#include <time.h> 

int main() 
{//start main 

/****************CURRENT TIME**************************************************/ 
struct tm *localTimeInfo;//structure to be used to format Local Time 
time_t localTime;//create a local time 
time(&localTime);//Get the value of local time 
localTimeInfo = localtime(&localTime);//store the value of localTime to localTimeInfo 

printf("At the Tone, the time will be: %s", asctime(localTimeInfo)); 
/*****************END CURRENT TIME*********************************************/ 


/*****************TRIGGER TIME*************************************************/ 
char *triggerTime = "23 2:30:00 2015"; 

struct tm *triggerTimeInfo; 
time_t trigTime = *triggerTime; 

printf("At the Tone, the time will be: %s", ctime(&trigTime)); 



/*********************END TRIGGER TIME*****************************************/ 


return 0; 

}//end main 
+0

См. Ответ на этот вопрос для примера того, как преобразовать строку в time_t: http://stackoverflow.com/questions/7101433/c-converting-string-to-time-t-question – samgak

ответ

0

*triggerTime является '2' - первый символ строки. Это действительно очень маленькая ценность, поэтому неудивительно, что вы получаете дату, очень близкую к эпохе time_t. C на самом деле не является типичным, поэтому он не будет ловить такие ошибки. См. Комментарий Самгака для идей, как это сделать правильно.

Смежные вопросы