Commit ed7f2588e4

Carl Åstholm <carl@astholm.se>
2025-11-05 00:50:19
io: Translate Windows `Clock.real` timestamps to the POSIX/Unix epoch
This fixes `std.http.Client` TLS certificate validation on Windows.
1 parent cbfa87c
Changed files (1)
lib
lib/std/Io/Threaded.zig
@@ -2864,7 +2864,8 @@ fn nowWindows(userdata: ?*anyopaque, clock: Io.Clock) Io.Clock.Error!Io.Timestam
         .real => {
             // RtlGetSystemTimePrecise() has a granularity of 100 nanoseconds
             // and uses the NTFS/Windows epoch, which is 1601-01-01.
-            return .{ .nanoseconds = @as(i96, windows.ntdll.RtlGetSystemTimePrecise()) * 100 };
+            const epoch_ns = std.time.epoch.windows * std.time.ns_per_s;
+            return .{ .nanoseconds = @as(i96, windows.ntdll.RtlGetSystemTimePrecise()) * 100 + epoch_ns };
         },
         .awake, .boot => {
             // QPC on windows doesn't fail on >= XP/2000 and includes time suspended.