코드 아래에서 실행 중입니다. 위의 프로그램을 실행하면mktime() 함수의 혼동스러운 행동 : 하나씩 tm_hour 수를 늘림
int main()
{
struct tm storage={0,0,0,0,0,0,0,0,0};
char *p = NULL;
p = (char *)strptime("2012-08-25 12:23:12","%Y-%m-%d %H:%M:%S",&storage);
char buff[1024]={0};
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
storage.tm_sec += 20;
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
mktime(&storage);
strftime(buff,1024,"%Y-%m-%d %H:%M:%S",&storage);
cout << buff << endl;
return 0;
}
는 대신 '2012-08-25 12시 23분 32초'의 '2012-08-25 13시 23분 32초'인쇄합니다. 제발, 왜 그것이 tm_hour 가치가 증가 도움이됩니다. 프로그램에 입력 날짜를 '2012-02-25 12:23:32'로 입력하면 제대로 작동합니다.
출력 - 내 시스템>
[[email protected] root]$ ./a.out
2012-08-25 12:23:12
2012-08-25 12:23:32
2012-08-25 13:23:32
[[email protected] root]$
날짜 정보는 ->
은[[email protected] root]$ date
Sat Aug 25 08:28:26 EDT 2012
코드에 시간이 증가하는 것으로 표시되지 않습니다.그렇게하기 위해서는'strptime'에서 나온 결과와'mktime'에 대한 호출 결과를 출력하십시오. 그러면 실제로 일어나는 일을 막을 수 있습니다. –
죄송합니다. 구문 분석 할 수 없습니다. 그것은 하나가 아닌 세 개의 산출물을 가지고 있지만 어디에서 왔는지를 알려주지 않습니다. 출력과 일치하도록 샘플 코드를 업데이트하십시오. –