Skip to content

Commit b8ace55

Browse files
authored
fix: Use DayNumber instead of DayOfYear to compare DateOnly instances (#1228)
1 parent 5f30979 commit b8ace55

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/Humanizer.Tests.Shared/DateOnlyHumanizeTests.cs

+15
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,21 @@ public void DefaultStrategy_DaysAgo()
5151
Assert.Equal(expectedResult, actualResult);
5252
}
5353

54+
[Fact]
55+
public void DefaultStrategy_YearsAgo()
56+
{
57+
Configurator.DateOnlyHumanizeStrategy = new DefaultDateOnlyHumanizeStrategy();
58+
59+
var baseDate = DateTime.Now;
60+
var inputTime = DateOnly.FromDateTime(baseDate.AddMonths(-24));
61+
var baseTime = DateOnly.FromDateTime(baseDate);
62+
63+
const string expectedResult = "2 years ago";
64+
var actualResult = inputTime.Humanize(baseTime);
65+
66+
Assert.Equal(expectedResult, actualResult);
67+
}
68+
5469
[Fact]
5570
public void PrecisionStrategy_NextDay()
5671
{

src/Humanizer/DateTimeHumanizeStrategy/DateTimeHumanizeAlgorithms.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -154,12 +154,12 @@ public static string DefaultHumanize(DateTime input, DateTime comparisonBase, Cu
154154
public static string DefaultHumanize(DateOnly input, DateOnly comparisonBase, CultureInfo culture)
155155
{
156156
var tense = input > comparisonBase ? Tense.Future : Tense.Past;
157-
var diffDays = Math.Abs(comparisonBase.DayOfYear - input.DayOfYear);
157+
var diffDays = Math.Abs(comparisonBase.DayNumber - input.DayNumber);
158158
var ts = new TimeSpan(diffDays, 0, 0, 0);
159159

160160
var sameMonth = comparisonBase.AddMonths(tense == Tense.Future ? 1 : -1) == input;
161161

162-
var days = Math.Abs(input.DayOfYear - comparisonBase.DayOfYear);
162+
var days = Math.Abs(input.DayNumber - comparisonBase.DayNumber);
163163

164164
return DefaultHumanize(ts, sameMonth, days, tense, culture);
165165
}

0 commit comments

Comments
 (0)