time/FileTime: add FileTimeToChronoDuration()
This commit is contained in:
parent
1976003e91
commit
9fc3c60910
|
@ -53,6 +53,24 @@ ToInt64(FILETIME ft) noexcept
|
||||||
return ToUint64(ft);
|
return ToUint64(ft);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* "A file time is a 64-bit value that represents the number of
|
||||||
|
100-nanosecond intervals"
|
||||||
|
https://docs.microsoft.com/en-us/windows/win32/sysinfo/file-times */
|
||||||
|
using FileTimeResolution = std::ratio<1, 10000000>;
|
||||||
|
|
||||||
|
using FileTimeDuration = std::chrono::duration<int_least64_t,
|
||||||
|
FileTimeResolution>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculate a std::chrono::duration specifying the duration of the
|
||||||
|
* FILETIME since its epoch (1601-01-01T00:00).
|
||||||
|
*/
|
||||||
|
constexpr auto
|
||||||
|
FileTimeToChronoDuration(FILETIME ft) noexcept
|
||||||
|
{
|
||||||
|
return FileTimeDuration(ToInt64(ft));
|
||||||
|
}
|
||||||
|
|
||||||
constexpr time_t
|
constexpr time_t
|
||||||
FileTimeToTimeT(FILETIME ft) noexcept
|
FileTimeToTimeT(FILETIME ft) noexcept
|
||||||
{
|
{
|
||||||
|
@ -69,7 +87,8 @@ FileTimeToChrono(FILETIME ft) noexcept
|
||||||
constexpr std::chrono::seconds
|
constexpr std::chrono::seconds
|
||||||
DeltaFileTimeS(FILETIME a, FILETIME b) noexcept
|
DeltaFileTimeS(FILETIME a, FILETIME b) noexcept
|
||||||
{
|
{
|
||||||
return std::chrono::seconds((ToInt64(a) - ToInt64(b)) / 10000000);
|
return std::chrono::duration_cast<std::chrono::seconds>
|
||||||
|
(FileTimeToChronoDuration(a) - FileTimeToChronoDuration(b));
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue