private void ValidateEffectiveDate()
{
bool ICAdvanced = SessionManager.DisplayUser.IsInRole(PERMISSIONS.hasICAdvanced);
if (!ICAdvanced && model.EffectiveDate < DateTime.Now)
{
this.CheckAndAddValidation("EffectiveDate",
"You do not have the advanced permission, so you " +
"are unable to value historical indications.");
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不是ICAdvanced,则您应该无法拥有过去的日期,即今天或之前的某一天.但是,您今天或将来都可以拥有.
为什么这段代码没有正确反映?
好吧,你从现在开始,而不是今天一件事.如果"now"是下午5点,但EffectiveDate是今天的午夜,那么目前这将添加验证错误.
所以你可能想要:
if (!ICAdvanced && model.EffectiveDate < DateTime.Today)
Run Code Online (Sandbox Code Playgroud)
但是,您还需要弄清楚如何model.EffectiveDate表示.DateTime非常不幸的是它处理时区,因为值可以是UTC,本地或未指定.我目前还不清楚它如何影响比较(如果我在UTC + 5的时区比较"当地午夜"和"UTC午夜",结果应该是什么)?我认为它将它们都视为本地,因此将"本地午夜"和"UTC午夜"视为相同.值得思考的是.