3
我有一個uint64_t
表示自午夜以來的納秒數。 std :: chrono是否允許我將它轉換爲一個有意義的「時間」,相對簡單?將納秒(自午夜以來)轉換爲可打印時間?
另外,如果我有時間以來的時間,我會怎麼做?
例如,在這樣的格式:
14:03:27.812374923
而同樣的情況,但鑑於自新紀元納秒時? (如果答案是顯著不同)
我有一個uint64_t
表示自午夜以來的納秒數。 std :: chrono是否允許我將它轉換爲一個有意義的「時間」,相對簡單?將納秒(自午夜以來)轉換爲可打印時間?
另外,如果我有時間以來的時間,我會怎麼做?
例如,在這樣的格式:
14:03:27.812374923
而同樣的情況,但鑑於自新紀元納秒時? (如果答案是顯著不同)
你可以使用Howard Hinnant's, free, open-source, header-only library做到這一點:
#include "date.h"
#include <cstdint>
#include <iostream>
int
main()
{
using namespace std;
using namespace std::chrono;
using namespace date;
uint64_t since_midnight = 50607812374923;
cout << make_time(nanoseconds{since_midnight}) << '\n';
uint64_t since_epoch = 1499522607812374923;
cout << sys_time<nanoseconds>{nanoseconds{since_epoch}} << '\n';
}
此輸出:
14:03:27.812374923
2017-07-08 14:03:27.812374923
還是你需要考慮閏秒到賬戶since_epoch
?
cout << utc_time<nanoseconds>{nanoseconds{since_epoch}} << '\n';
2017-07-08 14:03:00.812374923
對於後面的計算,您需要"tz.h"
documented here,並且此庫不僅是標頭。