将字符串时间转换为UNIX时间戳

svi*_*ick 7 c++ unix-timestamp

我有一个字符串2013-05-29T21:19:48Z.我想将它转换为自1970年1月1日(UNIX纪元)以来的秒数,这样我就可以使用4个字节(或者5个字节,以避免2038年的问题)来保存它.我怎么能以便携的方式做到这一点?(我的代码必须在Linux和Windows上运行.)

我可以从字符串中获取日期部分,但我不知道如何计算秒数.我试着在C++中查看日期和时间实用程序文档,但我没有找到任何内容.

小智 8

这是工作代码

string s{"2019-08-22T10:55:23.000Z"};
std::tm t{};
std::istringstream ss(s);

ss >> std::get_time(&t, "%Y-%m-%dT%H:%M:%S");
if (ss.fail()) {
    throw std::runtime_error{"failed to parse time string"};
}   
std::time_t time_stamp = mktime(&t);
Run Code Online (Sandbox Code Playgroud)


fre*_*ass 1

看一眼strptime()。对于 Windows 替代方案,请参阅此问题