代码之家  ›  专栏  ›  技术社区  ›  Ole Albers

日期时间比较未按预期工作

c#
  •  1
  • Ole Albers  · 技术社区  · 8 年前

    我有以下情况:

    if (audit.CheckedoutBy != null && 
        audit.AuditStatus != null && 
        audit.AuditStatus.CheckOutDate != null && 
        audit.AuditStatus.CheckOutDate < DateTime.Now.AddDays(-1)) {
      // other stuff
    }
    else {
      _log.Debug($"No changes made. Status:{audit.AuditStatus}, checkoutdate: {audit.AuditStatus?.CheckOutDate}, checkedOutBy: {audit.AuditStatus?.CheckedOutby}");
    }
    

    现在,我的日志显示如下内容:

    调试2017-09-19 03:00:44125 40182ms[1]CheckoutCheck DiscardCheckouts-未做任何更改。状态:实体。审核状态,签出日期:2017年7月31日14:20:41,签出人:实体。共享点用户


    放弃签出-未做任何更改。状态:实体。审核状态, 退房日期:2017年7月18日13:57:51,退房人:

    正如您在日志中看到的,代码已跳转到“else”状态。然而,这个日期比“昨天”早得多。 另外,其他条件不能为null:CheckedOutBy不能为null,因为日志显示了一个对象而不是null。审计AuditStatus不能为空,因为如果为空,则不会有审核。审核状态。结账日期

    日志是在无法调试的服务器上创建的

    1 回复  |  直到 8 年前
        1
  •  3
  •   René Vogt    8 年前

    else 分支证明所有其他值都符合条件(假设 _log.Debug 打印正确的时间),唯一的可能性是 audit.CheckedOutBy null

    在你的 if audit.CheckedOutBy != null . 但在调试消息中,您输出了 audit.AuditStatus.CheckedOutBy