因此,用户可以从2个日历中选择2个不同的日期,开始日期和结束日期,当他们点击add
时,包括所选日期在内的日期将添加到数据库中,每个日期作为单独记录。
这样可以正常工作,但我不希望将周末添加到数据库中。
我已更新了datepicker http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerCustomCellRender.html的用户界面
但是如果用户选择fri-mon,例如fri,sat,sun and mon
将被添加到数据库中。
如果datyofweek不是星期六或星期日,我试图只运行代码
public ActionResult listHolidays(Holiday holiday, int? PersonId, string HolidayDate, string endDate)
{
DateTime startDates = Convert.ToDateTime(HolidayDate),
endDates = Convert.ToDateTime(endDate);
while (startDates <= endDates)
{
if (startDates.DayOfWeek != DayOfWeek.Saturday || startDates.DayOfWeek != DayOfWeek.Sunday)
{
Holiday holiday1 = new Holiday();
holiday1.PersonId = PersonId.Value;
holiday1.HolidayDate = startDates;
db.Holidays.AddObject(holiday1);
db.SaveChanges();
startDates = startDates.AddDays(1);
}
}
return RedirectToAction("Index");
}
任何帮助? 感谢
答案 0 :(得分:5)
您需要使用AND代替OR:
if (startDates.DayOfWeek != DayOfWeek.Saturday && startDates.DayOfWeek != DayOfWeek.Sunday)
您目前的状况将永远如此。如果startDates
为DayOfWeek.Saturday
,则不是DayOfWeek.Sunday
,反之亦然。
之后,您需要将startDates = startDates.AddDays(1);
放在if
之外。
否则,您将拥有无限循环,因为只要startDates
为DayOfWeek.Saturday
,它就不会再增加。
答案 1 :(得分:2)
更改
if (startDates.DayOfWeek != DayOfWeek.Saturday || startDates.DayOfWeek != DayOfWeek.Sunday)
要
if (startDates.DayOfWeek != DayOfWeek.Saturday && startDates.DayOfWeek != DayOfWeek.Sunday)
然后你需要移动这一行
startDates = startDates.AddDays(1);
到if
块之外(如果日期是周末日期,则startDates
变量永远不会改变。)
答案 2 :(得分:1)
如果陈述错误并且日期增加在错误的地方。
while (startDates <= endDates)
{
if (startDates.DayOfWeek != DayOfWeek.Saturday **&&** startDates.DayOfWeek != DayOfWeek.Sunday)
{
Holiday holiday1 = new Holiday();
holiday1.PersonId = PersonId.Value;
holiday1.HolidayDate = startDates;
db.Holidays.AddObject(holiday1);
db.SaveChanges();
}
**startDates = startDates.AddDays(1);**
}
答案 3 :(得分:1)
作为您计算选择的工作天数的替代解决方案
List<DateTime> allDates = New List<DateTime>();
for (DateTime date = startingDate; date <= endingDate; date = date.AddDays(1))
allDates.Add(date);
var days = allDates.Where(x => x.IsWeekday()).Count();
使用以下DateTime
扩展程序。
public static class DateTimeExtensions
{
public static bool IsWeekday(this DateTime dt)
{
return dt.DayOfWeek != DayOfWeek.Sunday && dt.DayOfWeek != DayOfWeek.Saturday;
}
}
根据我的评论,如果是假日系统,您可以将其扩展为IsWorkday
并加入一些逻辑以检查当天是否是银行假日。