From 3f9e83381841c403418b418c67b3c9ecf6c9c0eb Mon Sep 17 00:00:00 2001 From: Hiroaki Nakamura Date: Sat, 23 Oct 2021 18:17:07 +0900 Subject: [PATCH] Support millisecond format SSS --- main.zig | 15 ++++++++++----- time.zig | 2 ++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/main.zig b/main.zig index 220dc52c97a25ba151111466c5edec6350ee746a..6d9a99356c38422248c5bf1a6f2afebe08ab4e05 100644 --- a/main.zig +++ b/main.zig @@ -6,16 +6,21 @@ pub fn main() !void { std.log.info("All your codebase are belong to us.", .{}); } -fn assertOk(input: u64, expected: string) !void { +fn assertOk(dt: time.DateTime, comptime format: []const u8, expected: string) !void { const alloc = std.testing.allocator; - const actual = try time.DateTime.initUnix(input).formatAlloc(alloc, "YYYY-MM-DD HH:mm:ss"); + const actual = try dt.formatAlloc(alloc, format); defer alloc.free(actual); try std.testing.expectEqualStrings(expected, actual); } // zig fmt: off -test { try assertOk(0, "1970-01-01 00:00:00"); } -test { try assertOk(1257894000, "2009-11-10 23:00:00"); } -test { try assertOk(1634858430, "2021-10-21 23:20:30"); } +const initUnix = time.DateTime.initUnix; +test { try assertOk(initUnix(0), "YYY-MM-DD HH:mm:ss", "1970-01-01 00:00:00"); } +test { try assertOk(initUnix(1257894000), "YYY-MM-DD HH:mm:ss", "2009-11-10 23:00:00"); } +test { try assertOk(initUnix(1634858430), "YYY-MM-DD HH:mm:ss", "2021-10-21 23:20:30"); } + +const initUnixMs = time.DateTime.initUnixMs; +test { try assertOk(initUnixMs(1634858430023), "YYY-MM-DD HH:mm:ss.SSS", "2021-10-21 23:20:30.023"); } + diff --git a/time.zig b/time.zig index 6e056272deb5e90a3070b732c4042e5b44223c8c..4de255aba866707ad5054b3c66f5b0da1634084e 100644 --- a/time.zig +++ b/time.zig @@ -212,6 +212,7 @@ pub const DateTime = struct { .HH => try writer.print("{:0>2}", .{self.hours}), .mm => try writer.print("{:0>2}", .{self.minutes}), .ss => try writer.print("{:0>2}", .{self.seconds}), + .SSS => try writer.print("{:0>3}", .{self.ms}), .MM => try writer.print("{:0>2}", .{self.months + 1}), .z => try writer.writeAll(@tagName(self.timezone)), @@ -231,6 +232,7 @@ pub const DateTime = struct { ' ', ':', '-', + '.', => { try writer.writeAll(&.{c}); s = i + 1; -- 2.54.0