我有这个代码:
Configurator.DateTimeHumanizeStrategy = new PrecisionDateTimeHumanizeStrategy(.75);
var dateTime1 = DateTime.UtcNow.AddYears(2).AddMonths(-5);
var text1 = dateTime1.Humanize();
在 text1 变量中,我得到“一年后”。但这不是很准确。有没有办法得到“从现在起一年零七个月”?
更新1:
解决方案@Daniel Hoffman 有一些问题,例如,如果我的日期是过去的:
//UtcNow is 11.07.2021
var dateTime6 = new DateTime(2021, 4, 24);
TimeSpan dateTimeSpan6 = dateTime6 - DateTime.UtcNow;
var text6 = dateTime6.Humanize();
string textSpan6 = dateTimeSpan6.Humanize(maxUnit: TimeUnit.Year, precision: 2);
然后我得到“2 个月,11 周”,其中包含两次基本相同的信息,但单位不同。
更新 2:
我已经通过使用 Duration() 方法解决了过去日期的问题:
var timeSpan = date - DateTime.UtcNow;
return timeSpan.Duration().Humanize(maxUnit: TimeUnit.Year, precision: 2, minUnit: TimeUnit.Day);