我正在執行下面的代碼。混淆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 13點23分32秒',而不是 '2012-08-25 12點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'的調用結果顯示出來。這將有助於確定實際發生的事情。 –
對不起,我無法解析。它有三個輸出,而不是一個,但沒有表明它們來自哪裏。請更新示例代碼以匹配輸出。 –