Howard Hinnant's free, open source, header-only, date/time library
std::chrono::time_point
,即使在出现故障的情况下
get_time
和
strptime
设施它确实需要使用
std::istringstream
#include "date.h"
#include <sstream>
std::chrono::system_clock::time_point
parse_RFC_1123(const std::string& s)
{
std::istringstream in{s};
std::chrono::system_clock::time_point tp;
in >> date::parse("%a, %d %b %Y %T %Z", tp);
return tp;
}
std::chrono::system_clock::time_point
parse_RFC_850(const std::string& s)
{
std::istringstream in{s};
std::chrono::system_clock::time_point tp;
in >> date::parse("%a, %d-%b-%y %T %Z", tp);
return tp;
}
std::chrono::system_clock::time_point
parse_asctime(const std::string& s)
{
std::istringstream in{s};
std::chrono::system_clock::time_point tp;
in >> date::parse("%a %b %d %T %Y", tp);
return tp;
}
可以这样操作:
#include <iostream>
int
main()
{
auto tp = parse_RFC_1123("Sun, 06 Nov 1994 08:49:37 GMT");
using namespace date;
std::cout << tp << '\n';
tp = parse_RFC_850("Sunday, 06-Nov-94 08:49:37 GMT");
std::cout << tp << '\n';
tp = parse_asctime("Sun Nov 6 08:49:37 1994");
std::cout << tp << '\n';
}
和输出:
1994-11-06 08:49:37.000000
1994-11-06 08:49:37.000000
1994-11-06 08:49:37.000000
%a
和
%b
-DONLY_C_LOCALE=1
它变成了
与区域设置无关
. 它
应该
无论哪种方式,结果都是一样的。但从实际角度来看,如果您编译
没有
如果没有得到上述结果,则必须向std::lib供应商提交错误报告。
如果你编译
具有
-DONLY\u C\u语言环境=1
如果你没有得到上面的结果,把我的笼子弄得嘎嘎作响,我会在几天内,甚至几个小时内把它修好。