如何用小数秒将std::chrono::time_point转换为日历日期时间字符串?

例如:

"10-10-2012 12:38:40.123456"

最佳答案

如果是system_clock,则此类具有time_t转换。

#include <iostream>
#include <chrono>
#include <ctime>

using namespace std::chrono;

int main()
{
  system_clock::time_point p = system_clock::now();

  std::time_t t = system_clock::to_time_t(p);
  std::cout << std::ctime(&t) << std::endl; // for example : Tue Sep 27 14:21:13 2011
}

示例结果:
Thu Oct 11 19:10:24 2012

编辑:
但是,time_t不包含小数秒。
另一种方法是使用time_point::time_since_epoch()函数。此函数从纪元返回持续时间。
跟随的例子是毫秒分辨率的分数。
#include <iostream>
#include <chrono>
#include <ctime>

using namespace std::chrono;

int main()
{
  high_resolution_clock::time_point p = high_resolution_clock::now();

  milliseconds ms = duration_cast<milliseconds>(p.time_since_epoch());

  seconds s = duration_cast<seconds>(ms);
  std::time_t t = s.count();
  std::size_t fractional_seconds = ms.count() % 1000;

  std::cout << std::ctime(&t) << std::endl;
  std::cout << fractional_seconds << std::endl;
}

示例结果:
Thu Oct 11 19:10:24 2012

925

关于c++ - 如何将std::chrono::time_point转换为带有小数秒的日历日期时间字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12835577/

10-11 22:53