Skip to content

Commit 392aef7

Browse files
Fix naturaldelta truncating years instead of rounding (#295)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
1 parent ca892b3 commit 392aef7

2 files changed

Lines changed: 6 additions & 0 deletions

File tree

‎src/humanize/time.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ def naturaldelta(
256256

257257
return _ngettext("1 year, %d day", "1 year, %d days", days) % days
258258

259+
years = round(delta.days / 365)
259260
return _ngettext("%d year", "%d years", years).replace("%d", "%s") % intcomma(years)
260261

261262

‎tests/test_time.py‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ def test_naturaldelta_nomonths(test_input: dt.timedelta, expected: str) -> None:
127127
(dt.timedelta(days=9), "9 days"),
128128
(dt.timedelta(days=365), "a year"),
129129
(dt.timedelta(days=365 * 1_141), "1,141 years"),
130+
(dt.timedelta(days=365 * 2), "2 years"),
131+
(dt.timedelta(days=365 * 2.4), "2 years"),
132+
(dt.timedelta(days=365 * 2.6), "3 years"),
133+
(dt.timedelta(days=365 * 2.9), "3 years"),
134+
(dt.timedelta(days=365 * 3), "3 years"),
130135
("NaN", "NaN"), # Returns non-numbers unchanged.
131136
# largest possible timedelta
132137
(dt.timedelta(days=999_999_999), "2,739,726 years"),

0 commit comments

Comments
 (0)