设置两个范围日期与一个月差异的最佳方法是什么?

时间:2012-10-12 17:41:43

标签: c# datetime

我正在尝试渲染一个显示两个日期之间某些记录的视图,当没有参数传递时,视图必须显示从第5天开始到下个月第5天的一个月的记录。

现在我做到了,但我担心我的代码,是否有其他方法可以做到这一点,我的意思是,让我的代码看起来更好。

var dateStart = new DateTime();
var dateEnd = new DateTime();

if(dateTime !=null)
{  
     dateStart = Convert.ToDateTime(dateTime);
     dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);
}
else
{
     if (DateTime.Today.Day <= 4)
     {
          DateTime lastMonth = DateTime.Today.AddMonths(-1);
          dateStart = new DateTime(lastMonth.Year, lastMonth.Month, 5);
          dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);
     }

     DateTime date = DateTime.Today;
     dateStart = new DateTime(date.Year, date.Month, 5);
     dateEnd = new DateTime(date.Year, date.Month + 1,5);
}

2 个答案:

答案 0 :(得分:1)

你不应该添加这样的月份,因为当你试图创建一个月份为13的DateTime时,你最终会得到无效的DateTime,所以我会使用{{1而是方法。您似乎还需要添加另一个AddMonths,以便第二个else statement不相关。我稍微简化了代码,这是你的意思吗?

if statement

答案 1 :(得分:1)

这将在12月引发异常:

dateEnd = new DateTime(dateStart.Year, dateStart.Month + 1, 5);

您可以尝试:

DateTime dateEnd = dateStart.AddMonths(1);
dateEnd = new DateTime(dateEnd.Year, dateEnd.Month, 5);