首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DateTimeOffset?(可为空)和DateTimeOffset.Now之间的区别

DateTimeOffset?(可为空)和DateTimeOffset.Now之间的区别
EN

Stack Overflow用户
提问于 2015-08-01 00:19:53
回答 2查看 13.5K关注 0票数 3

如何计算可为空的DateTimeOffset之间的时间间隔?对DateTimeOffset.Now?

我需要像"x天y小时前“这样的结果

我从做这样的事情开始。

代码语言:javascript
复制
  var creationTime = //A nullable DateTimeOffset on Database    
  var difference = DateTimeOffset.Now.Subtract(creationTime);

但是因为creationTime是一个可以为空的时间,所以它给了我一个错误,我找不到区别。

EN

回答 2

Stack Overflow用户

发布于 2015-08-01 00:43:48

首先测试它是否具有带有HasValue的值,如果具有,则使用Value属性获取实际值

代码语言:javascript
复制
if(creationTime.HasValue)
    TimeSpan difference = DateTimeOffset.Now.Subtract(creationTime.Value);

或者,如果你有一个默认值,你可以使用GetValueOrDefault

代码语言:javascript
复制
TimeSpan difference = DateTimeOffset.Now.Subtract(creationTime.GetValueOrDefault(default));

最后一种选择是只使用-运算符。

代码语言:javascript
复制
TimeSpan? difference = DateTimeOffset.Now - creationTime;

但请注意,difference将是一个TimeSpan?,如果creationTimenull,则将为null

票数 5
EN

Stack Overflow用户

发布于 2015-08-01 01:03:46

为了防止任何人遇到这个问题,这里是我在上述答案的帮助下提出的扩展方法。

代码语言:javascript
复制
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";
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31750770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档