我们希望利用Humanizer package(因为我们在其他地方使用它)并且不想添加更多类似的库或手动代码。
我有时间跨度,其中一些是数千天。我希望将它们人性化并将它们转换为多年。现在我欣赏一年的变化,但如果我要转换10000天到几年 - 我很高兴失去精确度。
TimeSpan.FromDays(10000).Humanize(minUnit: TimeUnit.Year);
返回
"没有时间"
TimeSpan.FromDays(10000).Humanize();
返回
" 1428周"
如果我通过添加到现在将它们转换为DateTimes。
DateTime.Today.Add(TimeSpan.FromDays(10000)).Humanize();
返回
"从现在开始的27年"
它总是从现在开始追加 - 我可以用内置的方式从现在开始删除吗?
答案 0 :(得分:1)
正如您所发现的,Humanizer无法描述TimeSpan
的准确度超过数周。这是因为无法知道一年是365天还是366天或一个月是多少天。
但是,当需要描述相对TimeSpan
(即前一段时间)时,这是可能的,因为Humanizer可以计算当天是365天还是366天。
合并Pull request #604后,此功能应该可用,并将一年计算为365.25天。这会导致精度下降,但正如您所说,这不是问题。