Skip to content

Commit

Permalink
Merge pull request #248 from hsnsalhi/support-datetime-kind
Browse files Browse the repository at this point in the history
Take in account DateTime.Kind while comparing
  • Loading branch information
GregFinzer committed Jan 27, 2022
2 parents 3f7f65c + b4ea9fa commit d0cb3ce
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 3 deletions.
12 changes: 12 additions & 0 deletions Compare-NET-Objects-Tests/CompareDateTimeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,18 @@ public void CompareDateTimeAFewMillisecondsOffIgnore()
if (!result.AreEqual)
throw new Exception(result.DifferencesString);
}

[Test]
public void TestUtcvsLocalDates()
{
var dateTimeUtcNow = DateTime.UtcNow;
var dateTimeNow = dateTimeUtcNow.ToLocalTime();
CompareLogic compareLogic = new CompareLogic();

ComparisonResult result = compareLogic.Compare(dateTimeNow, dateTimeUtcNow);

Assert.IsTrue(result.AreEqual);
}
#endregion
}
}
6 changes: 3 additions & 3 deletions Compare-NET-Objects/Compare-NET-Objects.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
<PackageTags>compare comparison equality equal deep objects difference compareobjects deepequal deepequals</PackageTags>
<Description>What you have been waiting for. Perform a deep compare of any two .NET objects using reflection. Shows the differences between the two objects.</Description>
<Authors>gfinzer</Authors>
<Version>4.74.0</Version>
<AssemblyVersion>4.74.0.0</AssemblyVersion>
<Version>4.75.0</Version>
<AssemblyVersion>4.75.0.0</AssemblyVersion>
<NeutralLanguage>en-US</NeutralLanguage>
<Company>Kellerman Software</Company>
<PackageReleaseNotes>Support for Nullable DateTimeOffset by goyzhang https://github.com/GregFinzer/Compare-Net-Objects/issues/230
Expand All @@ -30,7 +30,7 @@ New config option to IgnoreConcreteTypes by goyzhang https://github.com/GregFin

Fix for circular references in EnumerableComparer by idealist1508 https://github.com/GregFinzer/Compare-Net-Objects/issues/237</PackageReleaseNotes>
<Copyright>Copyright © 2022</Copyright>
<FileVersion>4.74.0.0</FileVersion>
<FileVersion>4.75.0.0</FileVersion>

<PackageLicenseFile>License.txt</PackageLicenseFile>
<PackageIcon>NuGetIcon.png</PackageIcon>
Expand Down
6 changes: 6 additions & 0 deletions Compare-NET-Objects/TypeComparers/DateComparer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ public override void CompareType(CompareParms parms)
DateTime date1 = (DateTime) parms.Object1;
DateTime date2 = (DateTime) parms.Object2;

if (date1.Kind != date2.Kind)
{
date1 = date1.ToUniversalTime();
date2 = date2.ToUniversalTime();
}

if (Math.Abs(date1.Subtract(date2).TotalMilliseconds) > parms.Config.MaxMillisecondsDateDifference)
AddDifference(parms);

Expand Down

0 comments on commit d0cb3ce

Please sign in to comment.