我需要将给定日期转换为包含自 1970 年 1 月 1 日以来的毫秒数的 int。(unix 纪元)
我尝试了以下代码:
tm lDate;
lDate.tm_sec = 0;
lDate.tm_min = 0;
lDate.tm_hour = 0;
lDate.tm_mday = 1;
lDate.tm_mon = 10;
lDate.tm_year = 2010 - 1900;
time_t lTimeEpoch = mktime(&lDate);
cout << "Epoch: " << lTimeEpoch << endl;
结果是 Epoch: 1288584000,对应于 Mon, 01 Nov 2010 04:00:00 GMT
编辑:我期待 2010 年 10 月 1 日,显然 tm_mon 是自一月以来的月数, 所以正确的行应该是 lDate.tm_mon = 10 -1;
最佳答案
如手册页中所述,tm_mon 是: 自一月以来的月数,范围为 0 到 11。
关于C++ 如何将年-月-日格式的日期转换为 unix 纪元格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4000710/