奇怪的mktime行为-如果将返回值赋给变量,则更改



我正在试验一个奇怪的mktime()函数行为。当我赋值函数返回的值时,输入参数的值是1,当我不赋值时,值是不同的。

我已经知道mktime()调整结构体tm输入参数的值,但是发生的事情是不同的,让我们看看相应输出的代码:

<

第一代码/strong>

#include <iostream>
#include <time.h>
using namespace std;
int main(int argc, char** argv) {
    struct tm cT;
    strptime("31/07/2014 16:54:00", "%d/%m/%Y%n%T", &cT);
    mktime(&cT);
    cout << "Current Time: "  << cT.tm_mday << "/" << cT.tm_mon + 1 << "/" << cT.tm_year + 1900 << " " << cT.tm_hour << ":" << cT.tm_min << ":" << cT.tm_sec << endl;
}
输出:

当前时间:31/7/2014 16:54:0

<

第二代码/strong>

#include <iostream>
#include <time.h>
using namespace std;
int main(int argc, char** argv) {
    struct tm cT;
    strptime("31/07/2014 16:54:00", "%d/%m/%Y%n%T", &cT);
    time_t t = mktime(&cT);
    cout << "Current Time: "  << cT.tm_mday << "/" << cT.tm_mon + 1 << "/" << cT.tm_year + 1900 << " " << cT.tm_hour << ":" << cT.tm_min << ":" << cT.tm_sec << endl;
}
输出:

当前时间:31/7/2014 15:54:0

欢迎任何帮助。:)

这是一个典型的忘记初始化变量的例子。具体来说,您需要为strptime不会触及的至少所有字段初始化cT变量,并使用适当的值(strptime将只设置与格式字符串中输入字段描述符对应的那些字段)。

。:

struct tm cT = { 0 };
cT.tm_isdst = -1;
strptime("31/07/2014 16:54:00", "%d/%m/%Y%n%T", &cT);

相关内容

  • 没有找到相关文章

最新更新