4

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

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

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

返回

“没时间”

TimeSpan.FromDays(10000).Humanize();

返回

“1428 周”

如果我通过添加到现在将它们转换为日期时间。

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

返回

“27年后”

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

4

1 回答 1

1

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

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

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

于 2017-04-18T02:19:37.917 回答