如何计算可空的DateTimeOffset之间的时间?到DateTimeOffset.Now?
我需要像“x day y hours ago”
这样的结果我开始做这样的事情。
var creationTime = //A nullable DateTimeOffset on Database
var difference = DateTimeOffset.Now.Subtract(creationTime);
但是因为creationTime是一个可以为空的时间,所以它给了我一个错误,我无法真正找到差异。
答案 0 :(得分:8)
根据您对NULL数据库值的期望差异,您可以使用??
运算符来处理此问题:
DateTimeOffset? creationTime = null; // A nullable DateTimeOffset on Database
DateTimeOffset rightnow = DateTimeOffset.Now;
DateTimeOffset somewhen = creationTime ?? rightnow; // if NULL, it's NOW
var difference = rightnow.Subtract(somewhen);
(当然可以在读取数据库值时短暂使用??
)
答案 1 :(得分:3)
首先测试它是否具有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?
,如果null
为creationTime
,则为null
。
答案 2 :(得分:0)
万一有人遇到这个问题,这是我在上述答案的帮助下提出的扩展方法。
ModifiedBy