【发布时间】:2010-11-30 16:54:16
【问题描述】:
正如乱码问题所说,我基本上是在寻找一种更整洁的方法来执行以下 sn-p。 (它在日历中用于可用性匹配)
if (date.Year == now.Year && date.Month == now.Month && day == now.Day)
{
daysHtml.Append("<td class=\"today\">" + day.ToString() + "</td>");
}
else if (((day == SelectedDate.Day)
|| (day != SelectedDate.Day && ((day == SelectedDate.AddDays(1).Day || (SelectedDate.Day > 3 && day == SelectedDate.AddDays(-1).Day)) && (day != SelectedDate.AddDays(2).Day || (SelectedDate.Day > 3 && day != SelectedDate.AddDays(-2).Day) || day != SelectedDate.AddDays(3).Day || (SelectedDate.Day > 3 && day != SelectedDate.AddDays(-3).Day))))
|| (day != SelectedDate.Day && ((day == SelectedDate.AddDays(2).Day || (SelectedDate.Day > 3 && day == SelectedDate.AddDays(-2).Day)) && (day != SelectedDate.AddDays(3).Day || (SelectedDate.Day > 3 && day != SelectedDate.AddDays(-3).Day) || day != SelectedDate.AddDays(1).Day || (SelectedDate.Day > 3 && day != SelectedDate.AddDays(-1).Day))))
|| (day != SelectedDate.Day && ((day == SelectedDate.AddDays(3).Day || (SelectedDate.Day > 3 && day == SelectedDate.AddDays(-3).Day)) && (day != SelectedDate.AddDays(2).Day || (SelectedDate.Day > 3 && day != SelectedDate.AddDays(-2).Day) || day != SelectedDate.AddDays(1).Day || (SelectedDate.Day > 3 && day != SelectedDate.AddDays(-1).Day)))))
&& ((double)endprice > 0) && (SelectedDate.Month == date.Month))
{}
你的耳朵和眼睛现在可能会流血;)
只是为了澄清...... SelectedDate 是传递给日历的日期。日是月中的日。 (而循环日
基本上我正在传递一个我需要检查的日期(比如 27/11/2010,即 SelectedDay):
- SelectedDay 是添加到字符串中的当前日历日。
- 如果不是,那么如果我在选定日期中添加一天,是否匹配,如果不匹配,则为两天,再次为三天。
但是因为它是一个日期,我必须检查它是否超过第 3 天,然后才允许它检查它是否可以匹配负 3 天(或者上个月的结束将用于标记本月的结束)
回答
最后我使用了以下语法。
DateTime currentCalDate = DateTime.Parse(String.Format("{0}/{1}/{2}", day, SelectedDate.Month, SelectedDate.Year));
int daysToAdd = (currentCalDate.Day + 3 < days) ? 3 : 0;
int daysToDeduct = (currentCalDate.Day - 3 > 0) ? -3 : 0;
和
else if ((SelectedDate >= currentCalDate.AddDays(daysToDeduct) && SelectedDate <= currentCalDate.AddDays(daysToAdd)) && ((double)endprice > 0))
:)
【问题讨论】:
-
无论如何你可以用书面形式而不是通过代码来阐明逻辑吗?正如我所看到的,您正在尝试查看日期是否是今天,如果不是,那么它是否在选定日期的三天内。对吗?
-
什么是天变量? date.Day == day?
-
您在我澄清问题时输入了问题 :o) 基本上我通过了一个日期(比如 27/11/2010,即 SelectedDay),我需要对其进行测试。 SelectedDay 是被添加到字符串中的当前日历日。如果不是,那么如果我在 Selected Day 中添加一天,是否匹配,如果不匹配,则为两天,再次为三天。
标签: asp.net-mvc date if-statement .net-3.5 c#-3.0