From 341fe6c8ba10bfe3a0c464396e60a5fb9a52ac9b Mon Sep 17 00:00:00 2001 From: Dave Thaler Date: Wed, 5 Jun 2024 09:02:11 -0700 Subject: [PATCH] Display recent events in Pacific time (#8) Signed-off-by: Dave Thaler --- OrcanodeMonitor/Core/Fetcher.cs | 22 ++++++++++++++++------ OrcanodeMonitor/Core/OrcanodeEvent.cs | 4 ++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/OrcanodeMonitor/Core/Fetcher.cs b/OrcanodeMonitor/Core/Fetcher.cs index 759c976..ed156de 100644 --- a/OrcanodeMonitor/Core/Fetcher.cs +++ b/OrcanodeMonitor/Core/Fetcher.cs @@ -88,17 +88,27 @@ public async static Task EnumerateNodesAsync() } /// - /// Convert a unix timestamp in integer form to a DateTime value. + /// Convert a unix timestamp in integer form to a DateTime value in UTC. /// /// Unix timestamp /// DateTime value or null on failure - public static DateTime? UnixTimeStampToDateTime(long unixTimeStamp) + public static DateTime? UnixTimeStampToDateTimeUtc(long unixTimeStamp) { // A Unix timestamp is a count of seconds past the Unix epoch. DateTime dateTime = _unixEpoch.AddSeconds(unixTimeStamp); return dateTime; } + /// + /// Convert a unix timestamp in integer form to a DateTime value in local time. + /// + /// Unix timestamp + /// DateTime value or null on failure + public static DateTime? UnixTimeStampToDateTimeLocal(long unixTimeStamp) + { + return UtcToLocalDateTime(UnixTimeStampToDateTimeUtc(unixTimeStamp)); + } + public static DateTime? UtcToLocalDateTime(DateTime? utcDateTime) { if (utcDateTime == null) @@ -110,18 +120,18 @@ public async static Task EnumerateNodesAsync() } /// - /// Convert a unix timestamp in string form to a DateTime value. + /// Convert a unix timestamp in string form to a DateTime value in UTC. /// /// Unix timestamp string to parse /// DateTime value or null on failure - private static DateTime? UnixTimeStampStringToDateTime(string unixTimeStampString) + private static DateTime? UnixTimeStampStringToDateTimeUtc(string unixTimeStampString) { if (!long.TryParse(unixTimeStampString, out var unixTimeStamp)) { return null; } - return UnixTimeStampToDateTime(unixTimeStamp); + return UnixTimeStampToDateTimeUtc(unixTimeStamp); } public static long DateTimeToUnixTimeStamp(DateTime dateTime) @@ -148,7 +158,7 @@ public async static Task UpdateLatestTimestampAsync(Orcanode node, DateTime resp string content = await response.Content.ReadAsStringAsync(); string unixTimestampString = content.TrimEnd(); - DateTime? latestRecorded = UnixTimeStampStringToDateTime(unixTimestampString); + DateTime? latestRecorded = UnixTimeStampStringToDateTimeUtc(unixTimestampString); if (latestRecorded.HasValue) { node.LatestRecordedUtc = latestRecorded.HasValue ? latestRecorded.Value.ToUniversalTime() : null; diff --git a/OrcanodeMonitor/Core/OrcanodeEvent.cs b/OrcanodeMonitor/Core/OrcanodeEvent.cs index 446a3ed..66e5491 100644 --- a/OrcanodeMonitor/Core/OrcanodeEvent.cs +++ b/OrcanodeMonitor/Core/OrcanodeEvent.cs @@ -31,10 +31,10 @@ public OrcanodeEvent(string slug, OrcanodeStatus status, DateTime timestamp) public OrcanodeEventMeta Meta { get; private set; } public override string ToString() { - return String.Format("{0} {1} at {2}", Slug, Status, Fetcher.UnixTimeStampToDateTime(Meta.UnixTimestamp)); + return String.Format("{0} {1} at {2}", Slug, Status, Fetcher.UnixTimeStampToDateTimeLocal(Meta.UnixTimestamp)); } [JsonPropertyName("timestamp")] - public DateTime? DateTime => Core.Fetcher.UnixTimeStampToDateTime(Meta.UnixTimestamp)?.ToLocalTime(); + public DateTime? DateTime => Fetcher.UnixTimeStampToDateTimeLocal(Meta.UnixTimestamp); [JsonPropertyName("description")] public string Description { get {