5#include "acme/prototype/datetime/file_time.h"
6#include "acme/prototype/datetime/system_time.h"
8#include "acme/_operating_system.h"
10#include "acme/operating_system/ansi/windows_time.h"
12#include "acme/operating_system/shared_posix/time1.h"
15inline ::file_time as_file_time(
const FILETIME &filetime)
19 (::u64)::make_u64(filetime.dwLowDateTime, filetime.dwHighDateTime)};
23inline FILETIME as_FILETIME(const ::file_time &filetime)
26 return {.dwLowDateTime = ::lower_u32(filetime.m_uFileTime),
27 .dwHighDateTime = ::upper_u32(filetime.m_uFileTime)};
31inline FILETIME as_FILETIME(
const SYSTEMTIME &systemtime)
36 ::SystemTimeToFileTime(&systemtime, &filetime);
43inline SYSTEMTIME as_SYSTEMTIME(const ::earth::time &
time)
52 ptm = tm_struct(&ttm,
time);
54 st.wDay = ptm->tm_mday;
55 st.wDayOfWeek = ptm->tm_wday;
56 st.wHour = ptm->tm_hour;
58 st.wMinute = ptm->tm_min;
59 st.wMonth = ptm->tm_mon + 1;
60 st.wSecond = ptm->tm_sec;
61 st.wYear = 1900 + ptm->tm_year;
67inline FILETIME as_FILETIME(const ::earth::time &
time)
72 auto systemtime = as_SYSTEMTIME(
time);
74 if (!::SystemTimeToFileTime(&systemtime, &filetime))
79 auto lasterror = ::windows::get_last_error();
85 ::memory_set(&filetime, 0,
sizeof(filetime));
94inline SYSTEMTIME as_SYSTEMTIME(
const FILETIME &filetime)
97 SYSTEMTIME systemtime;
99 ::FileTimeToSystemTime(&filetime, &systemtime);
105inline SYSTEMTIME as_SYSTEMTIME(
const system_time &systemtime)
108 return {.wYear = systemtime.wYear,
109 .wMonth = systemtime.wMonth,
110 .wDayOfWeek = systemtime.wDayOfWeek,
111 .wDay = systemtime.wDay,
112 .wHour = systemtime.wHour,
113 .wMinute = systemtime.wMinute,
114 .wSecond = systemtime.wSecond,
115 .wMilliseconds = systemtime.wMilliseconds};
119inline system_time as_system_time(
const SYSTEMTIME &systemtime)
122 return {systemtime.wYear, systemtime.wMonth, systemtime.wDayOfWeek, systemtime.wDay,
123 systemtime.wHour, systemtime.wMinute, systemtime.wSecond, systemtime.wMilliseconds};
128inline void toLocal_SYSTEMTIME(SYSTEMTIME& systemtime)
131 FILETIME ft, localFt;
133 ft = as_FILETIME(systemtime);
135 FileTimeToLocalFileTime(&ft, &localFt);
137 FileTimeToSystemTime(&localFt, &systemtime);
Definition system_time.h:8