如何计算可为空的DateTimeOffset之间的时间间隔?对DateTimeOffset.Now?
我需要像"x天y小时前“这样的结果
我从做这样的事情开始。
var creationTime = //A nullable DateTimeOffset on Database
var difference = DateTimeOffset.Now.Subtract(creationTime);但是因为creationTime是一个可以为空的时间,所以它给了我一个错误,我找不到区别。
发布于 2015-08-01 00:43:48
首先测试它是否具有带有HasValue的值,如果具有,则使用Value属性获取实际值
if(creationTime.HasValue)
TimeSpan difference = DateTimeOffset.Now.Subtract(creationTime.Value);或者,如果你有一个默认值,你可以使用GetValueOrDefault
TimeSpan difference = DateTimeOffset.Now.Subtract(creationTime.GetValueOrDefault(default));最后一种选择是只使用-运算符。
TimeSpan? difference = DateTimeOffset.Now - creationTime;但请注意,difference将是一个TimeSpan?,如果creationTime为null,则将为null。
发布于 2015-08-01 01:03:46
为了防止任何人遇到这个问题,这里是我在上述答案的帮助下提出的扩展方法。
namespace Extensions{
public static class DateExtensions
{
public static string GetDifferenceTillNow(this DateTimeOffset? datetimeoffset) {
DateTimeOffset? creationTime = datetimeoffset;
DateTimeOffset rightnow = DateTimeOffset.Now;
DateTimeOffset somewhen = creationTime ?? rightnow;
TimeSpan difference = rightnow.Subtract(somewhen);
return difference.Days.ToString() +" days & " + difference.Hours.ToString() + " hours ago";
}
}
}https://stackoverflow.com/questions/31750770
复制相似问题