diff --git a/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs b/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs index 56295a3e04..73a2d7729d 100644 --- a/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs +++ b/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs @@ -7,13 +7,14 @@ namespace CommunityToolkit.Maui.UnitTests.Converters; public class DateTimeOffsetConverterTests : BaseConverterTest { static readonly DateTime testDateTimeNow = DateTime.Now; - static readonly DateTime testDateTimeLocal = new(2020, 08, 25, 13, 37, 00, DateTimeKind.Local); static readonly DateTime testDateTimeUtc = new(2020, 08, 25, 13, 37, 00, DateTimeKind.Utc); - static readonly DateTime testDateTimeUnspecified = new(2020, 08, 25, 13, 37, 00); + static readonly DateTime testDateTimeLocal = new(2020, 08, 26, 13, 37, 00, DateTimeKind.Local); + static readonly DateTime testDateTimeUnspecified = new(2020, 08, 27, 13, 37, 00); static readonly DateTimeOffset testDateTimeOffsetNow = new(testDateTimeNow); - static readonly DateTimeOffset testDateTimeOffsetLocal = new(2020, 08, 25, 13, 37, 00, DateTimeOffset.Now.Offset); - static readonly DateTimeOffset testDateTimeOffsetUtc = new(2020, 08, 25, 13, 37, 00, DateTimeOffset.UtcNow.Offset); + static readonly DateTimeOffset testDateTimeOffsetUtc = new(2020, 08, 25, 13, 37, 00, TimeZoneInfo.Utc.GetUtcOffset(testDateTimeUtc)); + static readonly DateTimeOffset testDateTimeOffsetLocal = new(2020, 08, 26, 13, 37, 00, TimeZoneInfo.Local.GetUtcOffset(testDateTimeLocal)); + static readonly DateTimeOffset testDateTimeOffsetUnspecified = new(2020, 08, 27, 13, 37, 00, TimeSpan.Zero); public static TheoryData Data { get; } = new() { @@ -33,7 +34,7 @@ public class DateTimeOffsetConverterTests : BaseConverterTest { public bool Equals(DateTimeOffset x, DateTimeOffset y) { - return x.Year == y.Year && x.Month == y.Month && x.Day == y.Day && x.Hour == y.Hour && x.Minute == y.Minute && x.Second == y.Second; + return x.Year == y.Year && x.Month == y.Month && x.Day == y.Day && x.Hour == y.Hour && x.Minute == y.Minute && x.Second == y.Second && x.Offset == y.Offset; } public int GetHashCode(DateTimeOffset obj) { - return HashCode.Combine(obj.Year, obj.Month, obj.Day, obj.Hour, obj.Minute, obj.Second); + return HashCode.Combine(obj.Year, obj.Month, obj.Day, obj.Hour, obj.Minute, obj.Second, obj.Offset); } } } \ No newline at end of file diff --git a/src/CommunityToolkit.Maui/Converters/DateTimeOffsetConverter.shared.cs b/src/CommunityToolkit.Maui/Converters/DateTimeOffsetConverter.shared.cs index 6ba762621e..69f05751b6 100644 --- a/src/CommunityToolkit.Maui/Converters/DateTimeOffsetConverter.shared.cs +++ b/src/CommunityToolkit.Maui/Converters/DateTimeOffsetConverter.shared.cs @@ -35,8 +35,8 @@ public override DateTimeOffset ConvertBackTo(DateTime value, CultureInfo? cultur { var offset = value.Kind switch { - DateTimeKind.Local => DateTimeOffset.Now.Offset, - DateTimeKind.Utc => DateTimeOffset.UtcNow.Offset, + DateTimeKind.Local => TimeZoneInfo.Local.GetUtcOffset(value), + DateTimeKind.Utc => TimeZoneInfo.Utc.GetUtcOffset(value), _ => TimeSpan.Zero, };