2038年-为什么ctime在00:59:59而不是03:14:07停止

时间:2018-07-21 02:48:10

标签: unix-timestamp ctime year2038

我写了这个程序,只是通过使用ctime更改Windows时间和打印时间来查看2038-1-19 03:14:07之后会发生什么,但令我惊讶的是我的程序在2038-1-19 0时停止工作: 59:59。为什么呢?是因为ctime吗?

这是我使用的代码:

#include <ctime>
#include <iostream>
#include <windows.h>

int main(void){
    while(true){
        std::time_t t = std::time(0);
        std::tm* now = std::localtime(&t);
        std::cout << (now->tm_year + 1900) << '-'
            << (now->tm_mon + 1) << '-'
            << now->tm_mday << ' '
            << now->tm_hour << ':'
            << now->tm_min << ':'
            << now->tm_sec
            << "\n";
    Sleep(1000);
    }
return 0;
}

这是生成的输出:

...
2038-1-19 0:59:55
2038-1-19 0:59:56
2038-1-19 0:59:57
2038-1-19 0:59:58
2038-1-19 0:59:59

Process returned -1073741819 (0xC0000005)   execution time : 56.917 s
Press any key to continue.

0 个答案:

没有答案