C将时间字符串转换为纪元的秒数
作者:互联网
我有一个字符串,格式如下:
2010-11-04T23:23:01Z
Z表示时间是UTC.
我宁愿将其存储为一个时间点,以便比较容易.
这样做的推荐方法是什么?
目前(在quck搜索之后),简化算法是:
1: <Convert string to struct_tm: by manually parsing string>
2: Use mktime() to convert struct_tm to epoch time.
// Problem here is that mktime uses local time not UTC time.
解决方法:
使用C 11功能,我们现在可以使用流来解析时间:
iomanip std::get_time
将根据一组格式参数转换字符串,并将它们转换为struct tz对象.
然后,您可以使用std :: mktime()将其转换为epoch值.
#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>
int main()
{
std::tm t = {};
std::istringstream ss("2010-11-04T23:23:01Z");
if (ss >> std::get_time(&t, "%Y-%m-%dT%H:%M:%S"))
{
std::cout << std::put_time(&t, "%c") << "\n"
<< std::mktime(&t) << "\n";
}
else
{
std::cout << "Parse failed\n";
}
return 0;
}
标签:c-3,platform-independent,c,time 来源: https://codeday.me/bug/20190927/1822592.html