【发布时间】:2018-12-29 19:18:16
【问题描述】:
这是一个例子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。我可以这样做吗...:
- 有吗?
- 像
put_time这样的任意格式支持吗?
注意事项:
- 标准库解决方案是最好的;非标准但稳健的解决方案也很重要。
- 不是this 的骗子——因为我也对任意格式打印感兴趣;但应该注意的是,@HowardHinnant 对此的回答解决了这一问题的第一部分。
【问题讨论】:
-
@inf:说真的,你在标记为骗子之前阅读了这两个问题吗?现在,该问题的其中一个答案确实也回答了这个问题,但您不会通过阅读问题或大多数答案来知道这一点。
-
那么一切都好吗?
-
@inf:不,看我的第一个答案。
-
我重新打开了这个答案。前面提到的欺骗没有“不经过
time_t子句,这很重要,因为通过time_t的行程丢失了小数秒信息。 -
@inf: 1. 寻找我问题答案的人不太可能/不太可能找到另一个问题 + 认为答案可以解决他们的问题 + 搜索所有内容 + 跟随链接查看那里的信息是否解决了他们的问题。有多个高度投票的问题对符合您的欺骗标准。 2.关于你的第二点 - 很公平,但即使我说过“仅标准解决方案”,仍然值得用“标准库中没有解决方案直到 C++17”来回答这部分问题。
标签: c++ c++11 c++-standard-library chrono time-t