C# - 计算日期是否超过六个月

时间:2011-08-30 10:14:51

标签: c#

我试图计算给定的指定日期是否至少六个月。我这样做:

if(DateTime.Now.AddMonths(-6)>date)
{
    //Do something
}

这是对的吗?

有人说这种做法是错误的,不会给出准确的结果。以上是正确的吗?

2 个答案:

答案 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。除此之外,我认为您已经拥有的代码没有任何问题。