是否可以使用 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 天。这会导致精度损失,但正如您所提到的,这不是问题。
我们想利用 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 天。这会导致精度损失,但正如您所提到的,这不是问题。