我试图计算给定的指定日期是否至少六个月。我这样做:
if(DateTime.Now.AddMonths(-6)>date)
{
//Do something
}
这是对的吗?
有人说这种做法是错误的,不会给出准确的结果。以上是正确的吗?
答案 0 :(得分:10)
“6个月”并不是一个精确的时间。这取决于月份的长短。特别是,与date.AddMonths(6) < DateTime.Now
相比,您的计算结果可能会有所不同。 (考虑从8月30日开始增加6个月,从2月28日开始减少6个月......你可能没事,但你需要仔细考虑这个问题。)
你需要仔细考虑一些事情:
DateTime.Now
而不是DateTime.Today
;你希望当前的时间如何影响事情?date
UTC的“种类”,未指定或本地?不幸的是,它有所作为 - DateTime
is confusing。最终,如果人们告诉你它不会给出准确的结果,你应该向他们询问具体的例子 - 你需要获得丰富的输入数据和所需的结果,为他们添加自动化测试,并让他们通过。然后,如果有人声称您的代码工作不正常,您应该能够挑战他们创建另一个失败的测试用例,并证明他们的决定是合理的。
答案 1 :(得分:4)
如果您只关心日期而不关心时间,请改用DateTime.Now.Date。除此之外,我认为您已经拥有的代码没有任何问题。