首页 > 解决方案 > 使用 date.h 将纪元转换为 UTC 日期格式

问题描述

一个非常简单的问题。我一直在使用 date.h 从完整的日期戳中获取以毫秒和纳秒为单位的纪元。

     istringstream temp_ss1{timestamp1};
     sys_time<nanoseconds> tp1;
     temp_ss1 >> parse("%Y/%m/%d,%T", tp1);
     std::cout << tp1.time_since_epoch().count() << "ns\n";

从毫秒纪元到毫秒的完整日期戳的方法是什么?

非常感谢您的帮助 !

标签: c++

解决方案


如果您对格式不挑剔,则可以流式传输sys_time<milliseconds>。如果您想控制格式,可以使用date::format这些格式标志。例如:

std::cout << format("%Y/%m/%d,%T", tp1) << '\n';

输出的精度将与time_point.

有没有转换的方法。“long epoch = 1609330278454”是否有一个需要很长时间并打印日期的功能?

#include "date/date.h"
#include <iostream>

int
main()
{
    using namespace date;
    using namespace std;
    using namespace std::chrono;

    long epoch = 1609330278454;
    cout << sys_time<milliseconds>{milliseconds{epoch}} << '\n';
}

输出:

2020-12-30 12:11:18.454

您可以像这样自定义格式:

long epoch = 1609330278454;
sys_time<milliseconds> tp{milliseconds{epoch}};
cout << format("%Y/%m/%d,%T", tp) << '\n';

输出:

2020/12/30,12:11:18.454

推荐阅读