作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 long long 整数,表示具有纳秒精度的纪元时间戳,我想将其转换为人类可读的时间戳,例如 date-hh:mm:ss
我试过用static cast直接把这个整数转成time_t格式,打算用localtime格式化,但是没有成功。
从文档中可以看出 time_ts 是一个 32 位整数,这意味着它不够大,无法读取我的时间戳。将我的时间戳格式化为人类可读格式的最佳方法是什么?
#include <iostream>
#include <sstream>
#include <locale>
#include <iomanip>
#include <ctime>
int main()
{
time_t now = time(NULL);
long long int ts = 1561402947698860015;
time_t t = static_cast<time_t>(ts);
std::cout << std::asctime(std::localtime(&t))
<< t << " seconds since the Epoch\n";
std::cout<<"done"<<std::endl;
return 0;
}
最佳答案
如果您除以转换为秒,您的代码将起作用(如 user4581301 所评论):
long long int ts = 1561402947698860015 / 1000000000;
而且,而不是使用:
std::asctime(std::localtime(&t))
您可以使用以下方法获得相同的结果:
ctime(&t)
关于c++ - 如何将纳秒纪元时间戳转换为可读格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744229/
我是一名优秀的程序员,十分优秀!