私は以下のコードを実行しています。上記のプログラムが実行された場合mktime()関数の動作が混乱する:tm_hour個数を1つ増やす
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年8月25日12時23分三十二秒」の「2012年8月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'の呼び出し結果を表示します。それは実際に起こっていることをピン止めするのに役立ちます。 –
申し訳ありませんが、私はそれを解析することはできません。 1つではなく3つの出力を持ちますが、どこから来たのかはわかりません。出力に合わせてサンプルコードを更新してください。 –