c++ - 我可以避免通过 time_t 打印 time_point 吗?

标签 c++ c++11 c++-standard-library c++-chrono time-t

这是一个例子 adapted from 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 这样的任意格式?

注意事项:

  • 标准库解决方案是最好的;非标准但强大的解决方案也很重要。
  • 不是this的骗子- 因为我也对任意格式打印感兴趣;但应该注意的是,@HowardHinnant 对那个问题的回答解决了这个问题的第一部分。

最佳答案

Howard Hinnant's library - 已被投票成为 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

关于c++ - 我可以避免通过 time_t 打印 time_point 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51460135/

相关文章:

c++ - 使用 CPR 从 C++ 调用 HTTP?

c++ - 无法找到 C++ 标准库头文件中未定义的宏

c++ - 使用 QT 和参数在 SQLite 数据库中插入日期时间

c++ - 潜在溢出比较排序和各种排序算法的比较

c++ - 对象销毁时调用回调函数

c++11 - C++0x : Overload Resolution

c++ - 为自定义类型重载 std::to_string 和 std::to_chars?

C++ 迭代器相等

c++ - InternetConnect 无法通过 ftp 代理连接到 FTP 服务器

c++ - 使用winsock api同时打开tcp连接