【发布时间】:2019-11-06 17:06:16
【问题描述】:
我有一个 long long 整数,表示具有纳秒精度的纪元时间戳,我想将其转换为人类可读的时间戳,例如 date-hh:mm:ss
我尝试使用静态转换,将这个整数直接转换为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;
}
【问题讨论】:
-
我觉得你应该试试看:en.cppreference.com/w/cpp/chrono
-
另一个方便的链接:github.com/HowardHinnant/date Hinnant 先生已经解决了您将遇到的大部分格式问题。
标签: c++ unix-timestamp