我正在尝试渲染一个显示两个日期之间某些记录的视图,当没有参数传递时,视图必须显示从第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);
}
答案 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);