A basic datetime module in zig
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

datetime: any formatter

+26 -1
+1 -1
build.zig.zon
··· 1 1 .{ 2 2 .name = .datetime, 3 3 .fingerprint = 0x93f3c6ca32d93f18, 4 - .version = "0.0.3", 4 + .version = "0.0.4", 5 5 .minimum_zig_version = "0.15.2", 6 6 .paths = .{ 7 7 "build.zig",
+25
src/datetime.zig
··· 88 88 return self._format(DefaultFormat, writer); 89 89 } 90 90 91 + pub fn formatNumber(self: Self, writer: *std.Io.Writer, options: anytype) std.Io.Writer.Error!void { 92 + _ = options; 93 + return writer.print("{d}", .{self.toTimestamp()}); 94 + } 95 + 91 96 /// To format as a timestamp. 92 97 /// Usage: std.fmt.alt(yourTimestamp, .timestampFormatter) 93 98 pub fn timestampFormatter(self: Self, writer: *std.Io.Writer) std.Io.Writer.Error!void { 94 99 return writer.print("{d}", .{self.toTimestamp()}); 100 + } 101 + 102 + const Formatter = struct { 103 + dtval: Self, 104 + fmt: []const u8, 105 + pub inline fn format(self: @This(), writer: *std.Io.Writer) std.Io.Writer.Error!void { 106 + try self.dtval._format(self.fmt, writer); 107 + } 108 + }; 109 + 110 + pub fn formatter(self: Self, fmt: []const u8) Formatter { 111 + return .{ .dtval = self, .fmt = fmt }; 95 112 } 96 113 97 114 /// Formatting using our own simple format string. ··· 258 275 259 276 try std.testing.expectEqualStrings("1737478323", try std.fmt.bufPrint(&buf, "{d}", .{a1})); 260 277 } 278 + 279 + test formatter { 280 + const a1 = fromTimestamp(1737478323); 281 + var buf: [128]u8 = undefined; 282 + var writer: std.Io.Writer = .fixed(&buf); 283 + try writer.print("{f}", .{a1.formatter("Y H S")}); 284 + try std.testing.expectEqualStrings("2025 16 03", writer.buffered()); 285 + }