From 08e97698b7e73d3848f648e0eab35a8acde92c98 Mon Sep 17 00:00:00 2001 From: Maksim Golev Date: Tue, 8 Aug 2023 16:17:27 +0400 Subject: [PATCH 1/3] fix(#30128): Switch DateTimeKind from Unspecified to Local. --- .../src/System/Management/ManagementDateTime.cs | 5 ++--- .../System/Management/ManagementDateTimeConverterTests.cs | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/libraries/System.Management/src/System/Management/ManagementDateTime.cs b/src/libraries/System.Management/src/System/Management/ManagementDateTime.cs index 41cc474d38df1a..34860c2ff7e2bb 100644 --- a/src/libraries/System.Management/src/System/Management/ManagementDateTime.cs +++ b/src/libraries/System.Management/src/System/Management/ManagementDateTime.cs @@ -194,11 +194,10 @@ public static DateTime ToDateTime(string dmtfDate) } - // Construct a new System.DateTime object, .NET Framework uses date kind unspecified so use the same - var datetime = new DateTime(year, month, day, hour, minute, second, 0, DateTimeKind.Unspecified); + var datetime = new DateTime(year, month, day, hour, minute, second, 0, DateTimeKind.Local); // Then add the ticks calculated from the microseconds datetime = datetime.AddTicks(ticks); - // Then adjust the offset, using a manual calulation to keep the same possible range as netfx + // Then adjust the offset, using a manual calculation to keep the same possible range as netfx datetime = datetime.AddMinutes(-(utcOffset - TimeZoneInfo.Local.GetUtcOffset(datetime).Ticks / TimeSpan.TicksPerMinute)); return datetime; diff --git a/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs b/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs index ea8df0246bf78e..d8378e5964b0eb 100644 --- a/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs +++ b/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs @@ -27,7 +27,7 @@ public void DateTime_MinValue_RoundTrip() { string dmtfFromDateTimeMinValue = ManagementDateTimeConverter.ToDmtfDateTime(DateTime.MinValue); DateTime convertedDate = ManagementDateTimeConverter.ToDateTime(dmtfFromDateTimeMinValue); - Assert.Equal(DateTimeKind.Unspecified, convertedDate.Kind); + Assert.Equal(DateTimeKind.Local, convertedDate.Kind); Assert.Equal(DateTime.MinValue, convertedDate); } From 59e589250a01a5a6ee441d2f012d13dba29ce200 Mon Sep 17 00:00:00 2001 From: Maksim Golev Date: Fri, 11 Aug 2023 11:05:01 +0400 Subject: [PATCH 2/3] fix(#30128): Skip "DateTime_MinValue_RoundTrip" test for NetFX. --- .../tests/System/Management/ManagementDateTimeConverterTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs b/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs index d8378e5964b0eb..e345452b317b06 100644 --- a/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs +++ b/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs @@ -23,6 +23,7 @@ public void DateTime_RoundTrip() } [ConditionalFact(typeof(WmiTestHelper), nameof(WmiTestHelper.IsWmiSupported))] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "30128 is not fixed in NetFX")] public void DateTime_MinValue_RoundTrip() { string dmtfFromDateTimeMinValue = ManagementDateTimeConverter.ToDmtfDateTime(DateTime.MinValue); From 2f7443f25078774aaf885931b6f01f0f1ad220fe Mon Sep 17 00:00:00 2001 From: Maksim Golev Date: Mon, 14 Aug 2023 10:24:57 +0400 Subject: [PATCH 3/3] fix(#30128): Usage of DateTimeKind.Unspecified for test ManagementDateTimeConverter.ToDateTime(string) of NetFX. --- .../Management/ManagementDateTimeConverterTests.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs b/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs index e345452b317b06..056466b1611833 100644 --- a/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs +++ b/src/libraries/System.Management/tests/System/Management/ManagementDateTimeConverterTests.cs @@ -23,12 +23,18 @@ public void DateTime_RoundTrip() } [ConditionalFact(typeof(WmiTestHelper), nameof(WmiTestHelper.IsWmiSupported))] - [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "30128 is not fixed in NetFX")] public void DateTime_MinValue_RoundTrip() { string dmtfFromDateTimeMinValue = ManagementDateTimeConverter.ToDmtfDateTime(DateTime.MinValue); DateTime convertedDate = ManagementDateTimeConverter.ToDateTime(dmtfFromDateTimeMinValue); - Assert.Equal(DateTimeKind.Local, convertedDate.Kind); + if (PlatformDetection.IsNetFramework) + { + Assert.Equal(DateTimeKind.Unspecified, convertedDate.Kind); + } + else + { + Assert.Equal(DateTimeKind.Local, convertedDate.Kind); + } Assert.Equal(DateTime.MinValue, convertedDate); }