使用std :: chrono将纳秒(自午夜起)转换为可打印时间?

时间:2018-08-10 16:34:22

标签: c++ chrono

您如何将uint64_t(代表自午夜以来的纳秒数)转换为人类可以理解的时间,例如:

HH:MM:SS.nnnnnnnnn

使用标准的C ++ Chrono库吗?

1 个答案:

答案 0 :(得分:1)

澄清
如果仅提供自最近的午夜以来的纳秒数,则将不可能知道日期是什么(如Llya Bursov所指出的)。

即。如果我告诉您4:30,您将无法知道今天是8月10日。

因此,我假设您尝试将纪元时间(自1970年1月1日以来的数字或秒)转换为人类可以理解的日期。

要开始使用,请查看this页作为指南。

答案1
Here是在C ++中将纪元时间转换为人类可读时间的“官方”方式

int iCharecters = 0;
for(int i = 0 ; i< word.length;i++) {
    if ( word[i] == " " ) {
        break;
    } else {
        iCharecters ++;
    }
}

这是用于获取当前纪元时间并将其转换为人类可读的日期和时间。这确实是假设秒,而不是毫微秒。如果需要纳秒,只需将纳秒数除以1E9。一秒有1E9纳秒。您将获得秒数,然后可以将其转换为人类可读的代码。

如果您还使用[nano-seconds%1E9],那么在重要的情况下,结果将为纳秒数。该数字可以添加到上述代码返回的日期的末尾。

答案2
相反,如果您不需要日期,则只需将纳秒转换为人类可读的时间(HH:MM:SS.nnnnnnnnn),然后请参见以下示例:

#include <ctime>
#include <iostream>

int main()
{
    std::time_t result = std::time(nullptr);
    std::cout << std::ctime(&result);
}

有关持续时间的帮助,请参见this link

让我知道这是否解决了您的问题,或者我回答了错误的问题。