是否可以使用 Humanizer 将 TimeSpan 人性化到几年?

Is it possible to Humanize TimeSpan to years with Humanizer?

我们想利用 Humanizer package(因为我们在其他地方使用它),不想添加更多类似的库或手动代码。

我有一些时间跨度,其中一些是数千天。我想使它们人性化并将它们转换为年。现在我很欣赏一年的变化,但如果我将 10000 天转换为年 - 我对精度的损失感到满意。

 TimeSpan.FromDays(10000).Humanize(minUnit: TimeUnit.Year);

returns

"no time"

TimeSpan.FromDays(10000).人性化();

returns

"1428 weeks"

如果我通过添加到现在将它们转换为 DateTimes。

DateTime.Today.Add(TimeSpan.FromDays(10000)).Humanize(); 

returns

"27 years from now"

它总是从现在开始追加 - 我可以以内置方式删除从现在开始的部分吗?

正如您所发现的,Humanizer 无法描述 TimeSpan 的准确度大于周。这是因为无法知道一年有365天还是366天或者一个月有多少天

然而,当它需要描述相对 TimeSpan(即前一段时间)时,这是可能的,因为 Humanizer 可以计算这一天是 365 天还是 366 天。

合并 Pull request #604 后,此功能应该可用并将一年计算为 365.25 天。这会导致精度损失,但正如您所提到的,这不是问题。