Skip to content

Commit a9810a7

Browse files
committed
fix: Use DayNumber instead of DayOfYear to compare DateOnly instances
1 parent 6130592 commit a9810a7

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
@@ -53,6 +53,21 @@ public void DefaultStrategy_DaysAgo()
5353
Assert.Equal(expectedResult, actualResult);
5454
}
5555

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

src/Humanizer/DateTimeHumanizeStrategy/DateTimeHumanizeAlgorithms.cs

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

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

163-
var days = Math.Abs(input.DayOfYear - comparisonBase.DayOfYear);
163+
var days = Math.Abs(input.DayNumber - comparisonBase.DayNumber);
164164

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

0 commit comments

Comments
 (0)