From 053c784a8961a267e5ee59e6d9f8f2e285c9b746 Mon Sep 17 00:00:00 2001 From: Vladislav Antonyuk Date: Sun, 8 Feb 2026 15:08:23 +0200 Subject: [PATCH 1/2] Fix DateTimeOffset Converter #2582 --- .../DateTimeOffsetConverterTests.cs | 27 ++++++++++++------- .../DateTimeOffsetConverter.shared.cs | 4 +-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs b/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs index 56295a3e04..8c532fc82e 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, }; From a1056ec62e7d7317c84499c602c48752273688b7 Mon Sep 17 00:00:00 2001 From: Vladislav Antonyuk Date: Sun, 8 Feb 2026 16:00:43 +0200 Subject: [PATCH 2/2] Fix tests to be independant --- .../Converters/DateTimeOffsetConverterTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs b/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs index 8c532fc82e..73a2d7729d 100644 --- a/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs +++ b/src/CommunityToolkit.Maui.UnitTests/Converters/DateTimeOffsetConverterTests.cs @@ -95,10 +95,10 @@ public class DateTimeOffsetConverterTests : BaseConverterTest