From 8da6067bcc87df044fabb55f547a1c54d9cb379a Mon Sep 17 00:00:00 2001 From: "Dylan R. E. Moonfire" Date: Tue, 7 Jun 2022 09:40:31 -0500 Subject: [PATCH] fix(temporal): fixing time zone issues --- .../Cli/DatePipelineCommandOption.cs | 17 +++++++++++------ .../NitrideTemporalBuilderExtensions.cs | 2 ++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/Nitride.Temporal/Cli/DatePipelineCommandOption.cs b/src/Nitride.Temporal/Cli/DatePipelineCommandOption.cs index e3f1592..64dd03c 100644 --- a/src/Nitride.Temporal/Cli/DatePipelineCommandOption.cs +++ b/src/Nitride.Temporal/Cli/DatePipelineCommandOption.cs @@ -18,10 +18,10 @@ namespace Nitride.Temporal.Cli; /// public class DatePipelineCommandOption : IPipelineCommandOption { - private readonly Timekeeper timekeeper; - private readonly ILogger logger; + private readonly Timekeeper timekeeper; + public DatePipelineCommandOption(ILogger logger, Timekeeper timekeeper) { this.logger = logger.ForContext(); @@ -42,12 +42,14 @@ public class DatePipelineCommandOption : IPipelineCommandOption // If we got a date, then use NodaTime's fake clock to set it so // everything will use that. var value = (DateTime?)context.ParseResult.GetValueForOption(this.Option); - + if (value.HasValue && value.Value != DateTime.MinValue) { // We have a date, so we need to create a fake clock that has this // date for the entire run. - Instant instant = this.timekeeper.CreateInstant(value.Value); + var local = LocalDateTime.FromDateTime(value.Value); + ZonedDateTime zoned = local.InZoneStrictly(this.timekeeper.DateTimeZone); + var instant = zoned.ToInstant(); this.timekeeper.Clock = new FakeClock(instant); } @@ -55,8 +57,11 @@ public class DatePipelineCommandOption : IPipelineCommandOption // Report the date we are processing. Instant now = this.timekeeper.Clock.GetCurrentInstant(); ZonedDateTime dateTime = now.InZone(this.timekeeper.DateTimeZone); - string formatted = dateTime.ToString("yyyy-MM-dd HH:mm:ss x", CultureInfo.CurrentCulture); + string formatted = dateTime.ToString("G", CultureInfo.InvariantCulture); - this.logger.Information("Setting date/time to {When:l}", formatted); + this.logger.Information( + "Setting date/time to {When:l} in time zone {Zone:l}", + formatted, + this.timekeeper.DateTimeZone); } } diff --git a/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs b/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs index dcb629a..896d661 100644 --- a/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs +++ b/src/Nitride.Temporal/NitrideTemporalBuilderExtensions.cs @@ -58,9 +58,11 @@ public static class NitrideTemporalBuilderExtensions builder.ConfigureSite( (_, scope) => { + ILogger logger = scope.Resolve(); Timekeeper timekeeper = scope.Resolve(); timekeeper.DateTimeZone = config.DateTimeZone; + logger.Information("Setting time zone to {Zone}", timekeeper.DateTimeZone); }); }