gpt4 book ai didi

C++ 使用 std::get_time 解析 YYMMDD ISO 8601 日期字符串给出意外结果?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:14:58 25 4
gpt4 key购买 nike

我正在尝试解析格式为 YYMMDD 的日期。作为测试,我尝试了以下代码:

#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>

int main(){
std::tm t = {};
std::istringstream ss("191203");
ss >> std::get_time(&t, "%y%m%d");
if (ss.fail()){
std::cout << "Parse failed\n";
} else {
std::cout << std::put_time(&t, "%c") << '\n';
}
}

使用 Coliru、GCC 6.1 (C++17) 进行测试,输出为:

Sun Mar  0 00:00:00 1912

我期望的是:

Mon Dec 3 00:00:00 2019

格式字符串有问题吗?

最佳答案

你可以使用 Howard Hinnant's free, open-source date/time library像这样:

#include "date.h"
#include <iostream>
#include <sstream>

int
main()
{
date::sys_days t;
std::istringstream ss("191203");
ss >> date::parse("%y%m%d", t);
if (ss.fail())
std::cout << "Parse failed\n";
else
std::cout << date::format("%c", t) << '\n';
}

适用于 gcc 6.1:http://melpon.org/wandbox/permlink/gy3wpMXeCoxk9Ykj (以及其他平台)。除了正确的输出是:

Tue Dec  3 00:00:00 2019

关于C++ 使用 std::get_time 解析 YYMMDD ISO 8601 日期字符串给出意外结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42922744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com