以下のコードを実行しています。
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-2512:23:32」の代わりに「2012-08-2513:23:32」が出力されます。tm_hour値が増加している理由を教えてください。プログラムに「2012-02-2512:23:32」と入力した日付を入力すると、これは正しく機能します。これは混乱を招きます。
出力->
[user@rtpkvm55-vm2 root]$ ./a.out
2012-08-25 12:23:12
2012-08-25 12:23:32
2012-08-25 13:23:32
[user@rtpkvm55-vm2 root]$
私のシステムの日付情報、->
[user@rtpkvm55-vm2 root]$ date
Sat Aug 25 08:28:26 EDT 2012