From 57a2144777f6362d75212d6b3d160715a5e0c28b Mon Sep 17 00:00:00 2001 From: leo Date: Tue, 2 Jul 2024 12:30:12 +0800 Subject: [PATCH] fix: try to fix the timezone issue (#229) --- src/Commands/Blame.cs | 3 +-- src/Models/Commit.cs | 11 +++++------ src/Models/Stash.cs | 4 +--- src/Models/Statistics.cs | 4 +--- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/src/Commands/Blame.cs b/src/Commands/Blame.cs index 5d047d8c..e4c7f12a 100644 --- a/src/Commands/Blame.cs +++ b/src/Commands/Blame.cs @@ -9,7 +9,6 @@ namespace SourceGit.Commands [GeneratedRegex(@"^\^?([0-9a-f]+)\s+.*\((.*)\s+(\d+)\s+[\-\+]?\d+\s+\d+\) (.*)")] private static partial Regex REG_FORMAT(); - private static readonly DateTime UTC_START = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).ToLocalTime(); public Blame(string repo, string file, string revision) { @@ -67,7 +66,7 @@ namespace SourceGit.Commands var commit = match.Groups[1].Value; var author = match.Groups[2].Value; var timestamp = int.Parse(match.Groups[3].Value); - var when = UTC_START.AddSeconds(timestamp).ToString("yyyy/MM/dd"); + var when = DateTime.UnixEpoch.AddSeconds(timestamp).ToLocalTime().ToString("yyyy/MM/dd"); var info = new Models.BlameLineInfo() { diff --git a/src/Models/Commit.cs b/src/Models/Commit.cs index 363b4b08..0a95eac3 100644 --- a/src/Models/Commit.cs +++ b/src/Models/Commit.cs @@ -19,14 +19,13 @@ namespace SourceGit.Models public bool IsMerged { get; set; } = false; public Thickness Margin { get; set; } = new Thickness(0); - public string AuthorTimeStr => _utcStart.AddSeconds(AuthorTime).ToString("yyyy/MM/dd HH:mm:ss"); - public string CommitterTimeStr => _utcStart.AddSeconds(CommitterTime).ToString("yyyy/MM/dd HH:mm:ss"); - public string AuthorTimeShortStr => _utcStart.AddSeconds(AuthorTime).ToString("yyyy/MM/dd"); - public string CommitterTimeShortStr => _utcStart.AddSeconds(CommitterTime).ToString("yyyy/MM/dd"); + + public string AuthorTimeStr => DateTime.UnixEpoch.AddSeconds(AuthorTime).ToLocalTime().ToString("yyyy/MM/dd HH:mm:ss"); + public string CommitterTimeStr => DateTime.UnixEpoch.AddSeconds(CommitterTime).ToLocalTime().ToString("yyyy/MM/dd HH:mm:ss"); + public string AuthorTimeShortStr => DateTime.UnixEpoch.AddSeconds(AuthorTime).ToLocalTime().ToString("yyyy/MM/dd"); + public string CommitterTimeShortStr => DateTime.UnixEpoch.AddSeconds(CommitterTime).ToString("yyyy/MM/dd"); public bool IsCommitterVisible => Author != Committer || AuthorTime != CommitterTime; public bool IsCurrentHead => Decorators.Find(x => x.Type is DecoratorType.CurrentBranchHead or DecoratorType.CurrentCommitHead) != null; - - private static readonly DateTime _utcStart = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).ToLocalTime(); } } diff --git a/src/Models/Stash.cs b/src/Models/Stash.cs index 2fab0f2f..06da763a 100644 --- a/src/Models/Stash.cs +++ b/src/Models/Stash.cs @@ -4,13 +4,11 @@ namespace SourceGit.Models { public class Stash { - private static readonly DateTime UTC_START = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).ToLocalTime(); - public string Name { get; set; } = ""; public string SHA { get; set; } = ""; public ulong Time { get; set; } = 0; public string Message { get; set; } = ""; - public string TimeStr => UTC_START.AddSeconds(Time).ToString("yyyy/MM/dd HH:mm:ss"); + public string TimeStr => DateTime.UnixEpoch.AddSeconds(Time).ToLocalTime().ToString("yyyy/MM/dd HH:mm:ss"); } } diff --git a/src/Models/Statistics.cs b/src/Models/Statistics.cs index b0d619e1..abdd24df 100644 --- a/src/Models/Statistics.cs +++ b/src/Models/Statistics.cs @@ -49,7 +49,6 @@ namespace SourceGit.Models public Statistics() { - _utcStart = DateTime.UnixEpoch; _today = DateTime.Today; _thisWeekStart = _today.AddSeconds(-(int)_today.DayOfWeek * 3600 * 24 - _today.Hour * 3600 - _today.Minute * 60 - _today.Second); _thisWeekEnd = _thisWeekStart.AddDays(7); @@ -115,7 +114,7 @@ namespace SourceGit.Models public void AddCommit(string committer, double timestamp) { - var time = _utcStart.AddSeconds(timestamp).ToLocalTime(); + var time = DateTime.UnixEpoch.AddSeconds(timestamp).ToLocalTime(); if (time.CompareTo(_thisWeekStart) >= 0 && time.CompareTo(_thisWeekEnd) < 0) { Week.AddCommit((int)time.DayOfWeek, committer); @@ -136,7 +135,6 @@ namespace SourceGit.Models Week.Complete(); } - private readonly DateTime _utcStart; private readonly DateTime _today; private readonly DateTime _thisWeekStart; private readonly DateTime _thisWeekEnd;