【发布时间】:2012-08-20 18:23:56
【问题描述】:
我正在执行下面的代码。
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”,这会正常工作,这很令人困惑。
输出 ->
[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
【问题讨论】:
-
代码没有显示小时在增加。为此,请显示来自
strptime的结果以及来自对mktime的调用的结果。这将有助于确定实际发生的情况。 -
抱歉,我无法解析。它有三个输出而不是一个,但没有说明它们来自哪里。请更新示例代码以匹配输出。