首页 > 解决方案 > 我可以避免通过 time_t 打印 time_point 吗?

问题描述

这是一个改编自 cppreference.com的示例:

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

int main() {
    std::chrono::system_clock::time_point now = std::chrono::system_clock::now();
    std::time_t now_c = std::chrono::system_clock::to_time_t(now);
    std::cout << "The time was just "
              << std::put_time(std::localtime(&now_c), "%F %T") << '\n';
}

我不喜欢这个。我想打印我的时间点而不必经过time_t。我可以这样做...:

  1. 有吗?
  2. 具有像支持这样的任意格式put_time

笔记:

标签: c++c++11c++-standard-librarychronotime-t

解决方案


Howard Hinnant 的库- 已被投票成为 C++20 的一部分 - 也支持put_time类似格式的格式。

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

int
main()
{
    std::cout << date::format("%m/%d/%Y %I:%M:%S %p\n", std::chrono::system_clock::now());
}

示例输出:

07/22/2018 03:30:35.001865 AM

推荐阅读