c++ - 我可以避免通过 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
。我可以这样做...:
- 有吗?
- 具有像支持这样的任意格式
put_time
?
笔记:
- 标准库解决方案是最好的;非标准但稳健的解决方案也很重要。
- 不是骗人的——因为我也对任意格式的打印感兴趣;但应该注意的是,@HowardHinnant 对此的回答解决了这个问题的第一部分。
解决方案
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
推荐阅读
- function - 对于获取对象但可能找不到它的函数,最好的 func 签名是什么?
- reactjs - 如何仅限制 GSuit 用户注册/登录?
- c# - 异步任务方法空引用
- sql-server - SQL Server 2014 Express 版本数据库增长超过 10 GB 限制
- gun - 如何在 GUN 中为 PUT 请求添加属性?
- ios - BehaviourRelay 变量删除重复项
- sql - 使用分区子集获取总和(列)(按其他列分区)
- c# - 验证重置密码令牌在一种方法中失败,但在 ASP.NET 身份中的另一种方法中有效
- python - 为所有子文件夹中的每个 txt 文件运行一个脚本
- python - ModuleNotFoundError:没有名为“ggplot”的模块