Skip to content

Commit 02452c5

Browse files
DateTime.Now vs DateTime.UtcNow: retarget net10.0, bump test packages, add Unspecified conversion tests (#2150)
- Both projects net6.0 -> net10.0 - Microsoft.NET.Test.Sdk 16.11.0 -> 18.9.0, MSTest 2.2.7 -> 4.3.3, coverlet.collector 3.1.0 -> 10.0.1 - Two tests pinning the DateTimeKind.Unspecified asymmetry: ToLocalTime() treats an unspecified value as UTC, ToUniversalTime() treats it as local. Written offset-agnostic so they hold in a UTC CI container.
1 parent 2fab44e commit 02452c5

3 files changed

Lines changed: 28 additions & 6 deletions

File tree

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net6.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<Nullable>enable</Nullable>
66

77
<IsPackable>false</IsPackable>
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
12-
<PackageReference Include="MSTest.TestAdapter" Version="2.2.7" />
13-
<PackageReference Include="MSTest.TestFramework" Version="2.2.7" />
14-
<PackageReference Include="coverlet.collector" Version="3.1.0" />
11+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.9.0" />
12+
<PackageReference Include="MSTest.TestAdapter" Version="4.3.3" />
13+
<PackageReference Include="MSTest.TestFramework" Version="4.3.3" />
14+
<PackageReference Include="coverlet.collector" Version="10.0.1" />
1515
</ItemGroup>
1616

1717
</Project>

‎dotnet-datetime/DateTimeNowVsDateTimeUtcNow/DateTimeNow.Tests/DateTimeTests.cs‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,27 @@ public void LocalDate_ConvertToUTC_ReturnsUTCDate()
5656

5757
Assert.IsTrue(now.Kind == DateTimeKind.Local && utc.Kind == DateTimeKind.Utc);
5858
}
59+
60+
[TestMethod]
61+
public void UnspecifiedDate_WhenConvertedToLocalTime_IsTreatedAsUtc()
62+
{
63+
var value = new DateTime(2022, 1, 9, 14, 34, 42);
64+
65+
var unspecified = DateTime.SpecifyKind(value, DateTimeKind.Unspecified);
66+
var asUtc = DateTime.SpecifyKind(value, DateTimeKind.Utc);
67+
68+
Assert.AreEqual(asUtc.ToLocalTime(), unspecified.ToLocalTime());
69+
}
70+
71+
[TestMethod]
72+
public void UnspecifiedDate_WhenConvertedToUniversalTime_IsTreatedAsLocal()
73+
{
74+
var value = new DateTime(2022, 1, 9, 14, 34, 42);
75+
76+
var unspecified = DateTime.SpecifyKind(value, DateTimeKind.Unspecified);
77+
var asLocal = DateTime.SpecifyKind(value, DateTimeKind.Local);
78+
79+
Assert.AreEqual(asLocal.ToUniversalTime(), unspecified.ToUniversalTime());
80+
}
5981
}
6082
}

‎dotnet-datetime/DateTimeNowVsDateTimeUtcNow/DateTimeNowVsDateTimeUtcNow/DateTimeNowVsDateTimeUtcNow.csproj‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net6.0</TargetFramework>
5+
<TargetFramework>net10.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
88
</PropertyGroup>

0 commit comments

Comments
 (0)