0

したがって、ユーザーは2つのカレンダーから開始日と終了日という2つの異なる日付を選択できます。選択しaddた日付の間の日付をクリックすると、選択した日付がデータベースに追加され、各日付が個別のレコードとして追加されます。

これは問題なく機能しますが、週末をデータベースに追加したくありません。

datepicker http://www.kelvinluck.com/assets/jquery/datePicker/v2/demo/datePickerCustomCellRender.htmlのUIを更新しました が、たとえばユーザーが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");
        }

何か助けはありますか?ありがとう

4

4 に答える 4

5

ORの代わりにANDを使用する必要があります。

if (startDates.DayOfWeek != DayOfWeek.Saturday && startDates.DayOfWeek != DayOfWeek.Sunday)

あなたの現在の状態は常に真になります。の場合、そうでstartDatesDayOfWeek.SaturdayなくDayOfWeek.Sunday、その逆も同様です。

その後、startDates = startDates.AddDays(1);外側を置く必要がありますif

そうしないと、無限ループが発生します。これstartDatesDayOfWeek.Saturday、すぐにインクリメントされなくなるためです。

于 2012-12-10T15:13:25.410 に答える
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ない場合、日付が週末の日付である場合、変数は変更されません)。

于 2012-12-10T15:14:23.390 に答える
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);**
            }
于 2012-12-10T15:15:42.187 に答える
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休日システムの場合に拡張し、その日が銀行の休日であるかどうかを確認するためのロジックを組み込むことができます。

于 2012-12-10T15:27:49.147 に答える