C++11中提供了获取时间的chrono库,但是格式化显示太方便;C++11还提供了格式化时间iomanip库,通过其put_time方法可以格式化时间到秒,要显示毫秒,就需要自己处理了。
#include <chrono>
#include <string>
#include <sstream>
#include <iomanip>
#include <iostream>
// 格式化时间,精确到毫秒.
std::string getTimeString()
{
auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::stringstream ss;
ss << std::put_time(std::localtime(&t), "%Y-%m-%d %H:%M:%S");
auto tNow = std::chrono::system_clock::now();
auto tMilliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(tNow.time_since_epoch());
auto tSeconds = std::chrono::duration_cast<std::chrono::seconds>(tNow.time_since_epoch());
auto ms = tMilliseconds - tSeconds;
ss << "." << std::setfill('0') << std::setw(3) << ms.count();
return ss.str();
}
int main(int argc, char *argv[])
{
std::string time = getTimeString();
std::cout << time << std::endl;
return 0;
}
原文链接:C++之格式化日期时间为字符串(精确到毫秒)-CSDN博客