From a9810a7446c0a22c7c7a3249aa294bfbeefb941d Mon Sep 17 00:00:00 2001 From: hangy Date: Sun, 2 Oct 2022 13:29:32 +0200 Subject: [PATCH] fix: Use DayNumber instead of DayOfYear to compare DateOnly instances --- .../DateOnlyHumanizeTests.cs | 15 +++++++++++++++ .../DateTimeHumanizeAlgorithms.cs | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Humanizer.Tests.Shared/DateOnlyHumanizeTests.cs b/src/Humanizer.Tests.Shared/DateOnlyHumanizeTests.cs index bb9c0771f..507e03d3b 100644 --- a/src/Humanizer.Tests.Shared/DateOnlyHumanizeTests.cs +++ b/src/Humanizer.Tests.Shared/DateOnlyHumanizeTests.cs @@ -53,6 +53,21 @@ public void DefaultStrategy_DaysAgo() Assert.Equal(expectedResult, actualResult); } + [Fact] + public void DefaultStrategy_YearsAgo() + { + Configurator.DateOnlyHumanizeStrategy = new DefaultDateOnlyHumanizeStrategy(); + + var baseDate = DateTime.Now; + var inputTime = DateOnly.FromDateTime(baseDate.AddMonths(-24)); + var baseTime = DateOnly.FromDateTime(baseDate); + + const string expectedResult = "2 years ago"; + var actualResult = inputTime.Humanize(baseTime); + + Assert.Equal(expectedResult, actualResult); + } + [Fact] public void PrecisionStrategy_NextDay() { diff --git a/src/Humanizer/DateTimeHumanizeStrategy/DateTimeHumanizeAlgorithms.cs b/src/Humanizer/DateTimeHumanizeStrategy/DateTimeHumanizeAlgorithms.cs index fb34cf7c7..25cec7f5f 100644 --- a/src/Humanizer/DateTimeHumanizeStrategy/DateTimeHumanizeAlgorithms.cs +++ b/src/Humanizer/DateTimeHumanizeStrategy/DateTimeHumanizeAlgorithms.cs @@ -155,12 +155,12 @@ public static string DefaultHumanize(DateTime input, DateTime comparisonBase, Cu public static string DefaultHumanize(DateOnly input, DateOnly comparisonBase, CultureInfo culture) { var tense = input > comparisonBase ? Tense.Future : Tense.Past; - var diffDays = Math.Abs(comparisonBase.DayOfYear - input.DayOfYear); + var diffDays = Math.Abs(comparisonBase.DayNumber - input.DayNumber); var ts = new TimeSpan(diffDays, 0, 0, 0); var sameMonth = comparisonBase.AddMonths(tense == Tense.Future ? 1 : -1) == input; - var days = Math.Abs(input.DayOfYear - comparisonBase.DayOfYear); + var days = Math.Abs(input.DayNumber - comparisonBase.DayNumber); return DefaultHumanize(ts, sameMonth, days, tense, culture); }