fix: rm std.os usage

This commit is contained in:
Nurul Huda (Apon) 2026-05-27 16:38:39 +06:00
parent 17f2ca351f
commit ae1fb8a2fb
No known key found for this signature in database
GPG key ID: 5D3F1DE2855A2F79
2 changed files with 21 additions and 35 deletions

View file

@ -522,18 +522,20 @@ pub fn run(allocator: std.mem.Allocator, io_optional: ?std.Io) !void {
try instant_zdt.toString(allocator, .{}), try instant_zdt.toString(allocator, .{}),
}); });
const now_zdt = try Temporal.Now.zonedDateTimeISO(); if (io_optional) |io| {
defer now_zdt.deinit(); const now_zdt = try Temporal.Now.zonedDateTimeISO(io);
std.log.info( defer now_zdt.deinit();
\\Now Coverage std.log.info(
\\ - timeZoneId(): {s} \\Now Coverage
\\ - zonedDateTimeISO(): {s} \\ - timeZoneId(): {s}
\\ \\ - zonedDateTimeISO(): {s}
\\ \\
, .{ \\
Temporal.Now.timeZoneId(), , .{
try now_zdt.toString(allocator, .{}), Temporal.Now.timeZoneId(),
}); try now_zdt.toString(allocator, .{}),
});
}
const date_cal = try Temporal.PlainDate.calInit(2024, 2, 2, "iso8601"); const date_cal = try Temporal.PlainDate.calInit(2024, 2, 2, "iso8601");
const date_from = try Temporal.PlainDate.from("2024-02-02"); const date_from = try Temporal.PlainDate.from("2024-02-02");

View file

@ -87,9 +87,10 @@ pub fn timeZoneId() []const u8 {
/// Returns the current date and time as a [`Temporal.ZonedDateTime`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime) object, in the ISO 8601 calendar and the specified time zone. /// Returns the current date and time as a [`Temporal.ZonedDateTime`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/ZonedDateTime) object, in the ISO 8601 calendar and the specified time zone.
/// ///
/// See: [MDN Temporal.Now.zonedDateTimeISO](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Now/zonedDateTimeISO) /// See: [MDN Temporal.Now.zonedDateTimeISO](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal/Now/zonedDateTimeISO)
pub fn zonedDateTimeISO() !ZonedDateTime { pub fn zonedDateTimeISO(io: std.Io) !ZonedDateTime {
const now = try instant(io);
const time_zone = try ZonedDateTime.TimeZone.init(timeZoneId()); const time_zone = try ZonedDateTime.TimeZone.init(timeZoneId());
return ZonedDateTime.fromEpochNanoseconds(currentEpochNanoseconds(), time_zone); return ZonedDateTime.fromEpochNanoseconds(now.epochNanoseconds(), time_zone);
} }
const CurrentParts = struct { const CurrentParts = struct {
@ -134,26 +135,6 @@ fn currentParts(io: std.Io) CurrentParts {
}; };
} }
fn currentEpochNanoseconds() i128 {
return switch (builtin.os.tag) {
.windows => blk: {
const epoch_ns = std.time.epoch.windows * std.time.ns_per_s;
break :blk @as(i128, @intCast(std.os.windows.ntdll.RtlGetSystemTimePrecise())) * 100 + epoch_ns;
},
else => blk: {
var timespec: std.posix.timespec = undefined;
switch (std.posix.errno(std.posix.system.clock_gettime(.REALTIME, &timespec))) {
.SUCCESS => {},
else => return 0,
}
const seconds: i128 = @intCast(timespec.sec);
const nanos: i128 = @intCast(timespec.nsec);
break :blk seconds * std.time.ns_per_s + nanos;
},
};
}
// ---------- Tests --------------------- // ---------- Tests ---------------------
test instant { test instant {
const io = std.testing.io; const io = std.testing.io;
@ -190,9 +171,12 @@ test timeZoneId {
try std.testing.expectEqualStrings("UTC", tz); try std.testing.expectEqualStrings("UTC", tz);
} }
test zonedDateTimeISO { test zonedDateTimeISO {
const zdt = try zonedDateTimeISO(); const io = std.testing.io;
const zdt = try zonedDateTimeISO(io);
defer zdt.deinit(); defer zdt.deinit();
std.log.info("{d}", .{zdt.epochNanoseconds()});
try std.testing.expect(zdt.epochNanoseconds() > 0); try std.testing.expect(zdt.epochNanoseconds() > 0);
const tz = try zdt.timeZoneId(std.testing.allocator); const tz = try zdt.timeZoneId(std.testing.allocator);
defer std.testing.allocator.free(tz); defer std.testing.allocator.free(tz);