繁体   English   中英

如何使用c#linq检查两个日期之间的时间差是否恰好是1年?

[英]How to check if difference between two dates with timespan is exactly 1 year using c# linq?

我正在获取数据列表,并使用linq将其转换为所需的模型。

下面是我的示例代码:

    public JsonResult GetDataList([DataSourceRequest] DataSourceRequest request)
    {
        List<string> errorMessages = new List<string>();
        List<Model> ModelList = new List<Model>();
        try
        {
            Services.ServiceClient ServiceClient = new Services.ServiceClient();
            ModelList = ServiceClient.GetAllData().Select(x => new Model
            {
                ID = x.ID,
                Name = x.Name,
                Description = x.Description,
                Category = x.Category,
                DtActive = x.DtActive,
                DtExpire = x.DtExpire,                
                IsLive = ((x.DtActive.Value.Date < DateTime.Now.Date) && (x.DtExpire == (x.DtActive.Value.AddYears(1)))) ? true : false
            }).ToList();

            if (ServiceClient.ResponseStatus == RestClientHelper.ResponseCode.FAILUER)
            {
                errorMessages.Add(ServiceClient.ResponseMessage);
            }
        }
        catch (Exception ex)
        {
            errorMessages.Add(ex.Message);
        }

        if (errorMessages.Count == 0)
        {
            return Json(ModelList.AsEnumerable().ToDataSourceResult(request));
        }
        else
        {
            return Json(new { Data = ModelList.AsEnumerable().ToDataSourceResult(request), Errors = errorMessages });
        }
    }

因此,一切都很好,但是当我尝试根据条件设置“ IsLive”字段时,总是会出错。

我希望仅当“ DtActive”小于今天的日期并且“ DtExpiry”比“ DtActive”大1年时,才将其设置为“ true”。

谁能帮帮我吗。 我在这里做错了什么?

为了验证这一点,我在一年前的昨天和昨天做了两次约会。 然后像这样比较它们非常有效:

DateTime dtActive = DateTime.Now.AddDays( -1 );//Yesterday
DateTime dtExp = DateTime.Now.AddYears( 1 ).AddDays( -1 );//Last year yesterday

if ( dtActive.Date < DateTime.Now.Date && dtExp.AddYears( -1 ).Date == dtActive.Date )
{
    //Success
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM