HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
hires_utc_clock.hpp
1// Copyright 2019 Pokitec
2// All rights reserved.
3
4#pragma once
5
6#include "TTauri/Foundation/required.hpp"
7#include <date/tz.h>
8#include <chrono>
9#include <type_traits>
10
11namespace tt {
12
16 using rep = int64_t;
17 using period = std::nano;
20 static const bool is_steady = false;
21
22 static time_point now() noexcept;
23
24 static std::chrono::system_clock::time_point to_system_time_point(time_point x) noexcept {
25 static_assert(std::chrono::system_clock::period::num == 1, "Precision of system clock must be 1 second or better.");
26 static_assert(std::chrono::system_clock::period::den <= 1000000000, "Precision of system clock must be 1ns or worse.");
27
28 constexpr int64_t nano_to_sys_ratio = 1000000000LL / std::chrono::system_clock::period::den;
29
30 return std::chrono::system_clock::time_point{
31 std::chrono::system_clock::duration(x.time_since_epoch().count() / nano_to_sys_ratio)
32 };
33 }
34};
35
36std::string format_engineering(hires_utc_clock::duration duration);
37
40std::string format_iso8601_utc(hires_utc_clock::time_point utc_timestamp);
41
45std::string format_iso8601(hires_utc_clock::time_point utc_timestamp, date::time_zone const *time_zone=nullptr);
46
47}
Definition hires_utc_clock.hpp:15
T time_since_epoch(T... args)