From d90af788fd4349337a89bb92f58e47fded6baabc Mon Sep 17 00:00:00 2001 From: Meghan Denny Date: Fri, 10 Jul 2026 12:16:44 -0700 Subject: [PATCH] parseAt: set tz offset --- git.zig | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/git.zig b/git.zig index 53d879ae0252260311192d488b79d3ed53defc36..2a8b9e0a0616bf40ed793cc57e73526ad9292b88 100644 --- a/git.zig +++ b/git.zig @@ -191,18 +191,16 @@ fn parseCommitUserAndAt(input: string) !UserAndAt { } fn parseAt(time_part: string, tz_part: string) time.DateTime { - const at = time.DateTime.initUnix(extras.parseDigits(u64, time_part, 10) catch unreachable); + var at = time.DateTime.initUnix(extras.parseDigits(u64, time_part, 10) catch unreachable); std.debug.assert(tz_part.len == 5); std.debug.assert(tz_part[0] == '-' or tz_part[0] == '+'); - // const sign: i8 = if (tz_part[0] == '+') 1 else -1; - // const hrs = extras.parseDigits(u8, tz_part[1..][0..2], 10) catch unreachable; - // const mins = extras.parseDigits(u8, tz_part[3..][0..2], 10) catch unreachable; - // if (sign > 0) at = at.addHours(hrs); - // if (sign > 0) at = at.addMins(mins); - // at.offset += (hrs * 60) + mins; - // if (sign < 0) at = at.subHours(hrs); // TODO: - // if (sign < 0) at = at.subMins(mins); // TODO: - // at.offset -= (hrs * 60) + mins; + const sign: i8 = if (tz_part[0] == '+') 1 else -1; + const hrs = extras.parseDigits(u7, tz_part[1..][0..2], 10) catch unreachable; + const mins = extras.parseDigits(u7, tz_part[3..][0..2], 10) catch unreachable; + at.z_offset += hrs; + at.z_offset *= 4; + at.z_offset += mins / 15; + at.z_offset *= sign; return at; } -- 2.54.0