mirror of
https://github.com/Ed94/Odin.git
synced 2026-07-21 00:46:47 +00:00
Heavily improve time handling on Windows for time.now() and os.File_Info
This commit is contained in:
@@ -249,6 +249,16 @@ foreign kernel32 {
|
||||
GetModuleHandleA :: proc(lpModuleName: LPCSTR) -> HMODULE ---
|
||||
GetSystemTimeAsFileTime :: proc(lpSystemTimeAsFileTime: LPFILETIME) ---
|
||||
GetSystemTimePreciseAsFileTime :: proc(lpSystemTimeAsFileTime: LPFILETIME) ---
|
||||
FileTimeToSystemTime :: proc(lpFileTime: ^FILETIME, lpSystemTime: ^SYSTEMTIME) -> BOOL ---
|
||||
SystemTimeToTzSpecificLocalTime :: proc(
|
||||
lpTimeZoneInformation: ^TIME_ZONE_INFORMATION,
|
||||
lpUniversalTime: ^SYSTEMTIME,
|
||||
lpLocalTime: ^SYSTEMTIME,
|
||||
) -> BOOL ---
|
||||
SystemTimeToFileTime :: proc(
|
||||
lpSystemTime: ^SYSTEMTIME,
|
||||
lpFileTime: LPFILETIME,
|
||||
) -> BOOL ---
|
||||
CreateEventW :: proc(
|
||||
lpEventAttributes: LPSECURITY_ATTRIBUTES,
|
||||
bManualReset: BOOL,
|
||||
|
||||
@@ -2267,9 +2267,10 @@ FILETIME :: struct {
|
||||
|
||||
FILETIME_as_unix_nanoseconds :: proc "contextless" (ft: FILETIME) -> i64 {
|
||||
t := i64(u64(ft.dwLowDateTime) | u64(ft.dwHighDateTime) << 32)
|
||||
return (t - 0x019db1ded53e8000) * 100
|
||||
return (t - 116444736000000000) * 100
|
||||
}
|
||||
|
||||
|
||||
OVERLAPPED :: struct {
|
||||
Internal: ^c_ulong,
|
||||
InternalHigh: ^c_ulong,
|
||||
@@ -2943,6 +2944,16 @@ SYSTEMTIME :: struct {
|
||||
milliseconds: WORD,
|
||||
}
|
||||
|
||||
TIME_ZONE_INFORMATION :: struct {
|
||||
Bias: LONG,
|
||||
StandardName: [32]WCHAR,
|
||||
StandardDate: SYSTEMTIME,
|
||||
StandardBias: LONG,
|
||||
DaylightName: [32]WCHAR,
|
||||
DaylightDate: SYSTEMTIME,
|
||||
DaylightBias: LONG,
|
||||
}
|
||||
|
||||
|
||||
@(private="file")
|
||||
IMAGE_DOS_HEADER :: struct {
|
||||
|
||||
Reference in New Issue
Block a user