最近碰到一個需求,是要去將一個代表日期、時間的字串轉換成 std::chrono 的 time_point。
查了一下後,在 C++20 的時候,針對 chrono 其實又提供了包含時區在內很多追加功能;其中就有一個 parse() 的函式、是用來針對自定義的格式分析字串、轉換成 time_point 的(文件)。下面就是一個實際的例子:
std::string s = "2022-11-11T11:11:11.111Z"; std::istringstream iss(s); std::chrono::system_clock::time_point tp; iss >> std::chrono::parse("%Y-%m-%dT%H:%M:%S", tp); if (iss.fail()) std::cerr << "failed" << "\n"; else std::cout << tp << "\n";