diff --git a/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/CompareDateTimeInCSharp.csproj b/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/CompareDateTimeInCSharp.csproj index f02677bf64..dfb40caafc 100644 --- a/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/CompareDateTimeInCSharp.csproj +++ b/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/CompareDateTimeInCSharp.csproj @@ -2,7 +2,7 @@ Exe - net7.0 + net10.0 enable enable diff --git a/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/Examples.cs b/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/Examples.cs index d17c69ac41..f7590a2790 100644 --- a/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/Examples.cs +++ b/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/Examples.cs @@ -8,12 +8,7 @@ public static bool IsDateInSameTimeZone() var secondDate = new DateTime(2021, 05, 06, 12, 0, 0, DateTimeKind.Utc); var firstDateAsUtc = firstDate.ToUniversalTime(); - if (firstDateAsUtc.Equals(secondDate)) - { - return true; - } - - return false; + return firstDateAsUtc.Equals(secondDate); } public static bool IsDatePrecisionSame() @@ -21,12 +16,21 @@ public static bool IsDatePrecisionSame() var firstDate = new DateTime(2021, 05, 06, 12, 0, 0); var secondDate = new DateTime(2021, 05, 06, 12, 0, 0, 500); - if (firstDate == secondDate) - { - return true; - } + return firstDate == secondDate; + } + + public static (bool AreClose, bool SameDay, bool SameDayViaDateOnly) CompareWithTolerance() + { + var firstDate = new DateTime(2021, 05, 06, 12, 0, 0); + var secondDate = new DateTime(2021, 05, 06, 12, 0, 0, 500); + + var tolerance = TimeSpan.FromMilliseconds(1); + var areClose = (firstDate - secondDate).Duration() <= tolerance; + + var sameDay = firstDate.Date == secondDate.Date; + var sameDayViaDateOnly = DateOnly.FromDateTime(firstDate) == DateOnly.FromDateTime(secondDate); - return false; + return (areClose, sameDay, sameDayViaDateOnly); } } } diff --git a/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/Program.cs b/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/Program.cs index a35515f33f..98154d6c45 100644 --- a/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/Program.cs +++ b/dotnet-datetime/CompareDateTimeInCSharp/CompareDateTimeInCSharp/Program.cs @@ -46,6 +46,12 @@ static void Main(string[] args) { Console.WriteLine("Date precisions are different."); } + + // Comparing DateTime values with a tolerance, and comparing by date only + var (areClose, sameDay, sameDayViaDateOnly) = Examples.CompareWithTolerance(); + Console.WriteLine($"Within 1ms tolerance: {areClose}"); + Console.WriteLine($"Same day (Date property): {sameDay}"); + Console.WriteLine($"Same day (DateOnly): {sameDayViaDateOnly}"); } private static void ShowResult(DateTime firstDate, DateTime secondDate, int result) diff --git a/dotnet-datetime/CompareDateTimeInCSharp/Tests/Tests.csproj b/dotnet-datetime/CompareDateTimeInCSharp/Tests/Tests.csproj index 5e9fe2925b..519832e760 100644 --- a/dotnet-datetime/CompareDateTimeInCSharp/Tests/Tests.csproj +++ b/dotnet-datetime/CompareDateTimeInCSharp/Tests/Tests.csproj @@ -1,7 +1,7 @@ - net7.0 + net10.0 enable enable