我正在阅读以下内容:http://en.cppreference.com/w/cpp/chrono/c/mktime
特别是说:
Converts local calendar time to a time since epoch as a time_t object.
我假设这个纪元是 unix 纪元 (1970 01 01),但来自以下程序
#include <ctime>
#include <iostream>
int main()
{
std::tm example = {00, 00, 00, 01, 12, 69};
std::cout << std::mktime(&example) << std::endl;
return 0;
}
我得到了输出
0
这告诉我纪元是 1969 年 12 月 1 日的 00:00:00。 是否定义了 epoch 实现,或者我有其他一些根本性的误解?
最佳答案
对于现代的、不易出错的方法,这里是 free, open-source C++11/14/17 library做同样的事情,避免容易出错、线程不安全的 C API。
#include "chrono_io.h"
#include "date.h"
#include <iostream>
int
main()
{
using namespace date;
sys_seconds t = sys_days{1_d/dec/1969};
std::cout << t.time_since_epoch() << '\n';
}
输出:
-2678400s
关于c++ - 在 C++ 中使用 mktime 的纪元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42741051/