7#if defined( _WIN32 ) && !DOXYGEN
10using filetime_duration = duration<int64_t, std::ratio<1, 10000000> >;
13constexpr duration<int64_t> nt_to_unix_epoch{INT64_C(-11644473600)};
17 const auto asDuration = duration_cast<filetime_duration>(
stamp.time_since_epoch() );
18 const auto withNtEpoch= asDuration - nt_to_unix_epoch;
19 const auto rawCount = withNtEpoch.count();
22 result.dwLowDateTime =
static_cast<DWORD
>(rawCount);
23 result.dwHighDateTime =
static_cast<DWORD
>(rawCount >> 32);
31 ULARGE_INTEGER result;
32 result.HighPart= ft.dwHighDateTime;
33 result.LowPart= ft.dwLowDateTime;
39 const filetime_duration ftDuration { int64_t( (uint64_t( fileTime.dwHighDateTime) << 32)
40 | fileTime.dwLowDateTime ) };
47 fileTime.dwLowDateTime = ft.LowPart;
48 fileTime.dwHighDateTime = ft.HighPart;
57 FileTimeToSystemTime( &ft, &result );
61 FileTimeToSystemTime( &ft, &utc );
62 SystemTimeToTzSpecificLocalTime( NULL, &utc, &result );
71 SystemTimeToFileTime( &st, &ft );
75 TzSpecificLocalTimeToSystemTime( NULL, &st, &utc);
76 SystemTimeToFileTime( &utc, &ft );