【发布时间】:2020-11-18 10:35:29
【问题描述】:
我有以下代码:
var consentedOnDate = GetConsentedOn(consent.Id);
var declinedOnDate = GetConsentDeclinedOn(consent.Id);
var userHasGivenConsentLessThan1YearAgo = consentedOnDate != null && (consentedOnDate.Value - DateTime.Now.Date).TotalDays < -365;
var userHasDeclinedConsentLessThan1YearAgo = declinedOnDate != null && (declinedOnDate.Value - DateTime.Now.Date).TotalDays < -365;
如果 consentedOnDate 和 declinedOnDate 从今天开始已经超过 1 年,我希望 userHasGivenConsentLessThan1YearAgo 和 userHasDeclinedConsentLessThan1YearAgo 变量为真,但我的逻辑似乎不起作用 - 有我猜对了吗?不工作是指它在应该为假时说真,反之亦然。
【问题讨论】:
-
为什么不直接使用
var consentOneYearAgo = consentedOnDate < Datetime.Now.AddYears(-1)?(与null比较返回false) -
@ChrᴉzsupportsMonica 如果同意的OnDate 已经超过一年了?
-
@Jordan1993 如果同意日期早于一年前的现在(!),则返回 true。如果你想让它每天只计算天数,那么今天清晨应该是假的,使用 DateTime.Today。如果您仍然不相信,请尝试一些极端情况,例如 16.11.2020、18.11.2020 00:00:00、18.11.2020 20:00:00 和 25.11.2020,然后查看结果。