我正在尝试使用 Howard Hinnant 的日期库(https://github.com/HowardHinnant/date)将用户输入读取到日期时间对象中。我想使用这个库,因为它很现代,并且将包含在 C++20 中。
该程序应该能够接受 ISO 8601 格式的日期时间(YYYY-MM-DDTHH:MM:SS+HHMM例如2020-07-07T18:30+0100)以及DD-MM HH:MM或形式的简单日期时间HH:MM。在第二种情况下,应该假设缺失的信息将用当前日期/年份填写(时区将在稍后处理)。
这是我这样做的尝试。
using namespace date;
int main(int argc, char ** argv)
{
std::istringstream ss { argv[1] };
std::chrono::system_clock::time_point dt
{ std::chrono::system_clock::now() };
if ( date::from_stream(ss, "%F T %T %z", dt) ) {
std::cout << "Cond 1 entered\n";
}
else if ( ss.clear(), ss.seekg(0); date::from_stream(ss, "%d-%m %R", dt)) {
std::cout << "Cond 2 entered\n";
}
std::cout << dt << "\n";
} …Run Code Online (Sandbox Code Playgroud)