2017-01-06 42 views
0

次の月曜日と金曜日の日付を取得するために使用する次の方法があります。月曜日と金曜日の日付を来週から取得する

たとえば、今日は1/6/2017です。私はそれを実行した場合、私は次のような結果を得るために望んでいるだろう:

monday = 1/9/2017 
friday = 1/13/2017 

を、私は今週中にそれを実行する場合の方法は、正常に動作しますが、私は金曜日か土曜日のように、後でそれを実行した場合今から2週間後の月曜日と金曜日の日付を返します(来週ではありません)。

例えば、今日(金曜日6位)、それを実行している、私は次のような結果を得る:

monday = 1/16/2017 
friday = 1/20/2017 

をここにする方法である:

public static DateTime NextWeekRange(DateTime start, DayOfWeek day) 
{ 
    var add_days = ((int)day - (int)start.DayOfWeek + 7) % 7; 
    return start.AddDays(add_days); 
} 

そして、私のようなそれを呼び出しますこれは:

var monday = NextWeekRange(DateTime.Today.AddDays(i_today), DayOfWeek.Monday); 
var friday = NextWeekRange(DateTime.Today.AddDays(i_today + 4), DayOfWeek.Friday); 

私は何が間違っているのかよくわからないので、もう一組の目が助けになるでしょう!

ありがとうございます!

+0

最後のコードブロックの 'i_today'の値は何ですか? –

答えて

0
DateTime MyDate = DateTime.Now; 
     DateTime NextMondayDate; 
     DateTime NextFridayDate; 
     Boolean Test = true; 
     while (Test) 
     { 
      if (MyDate.DayOfWeek.ToString().ToUpper() == "MONDAY") 
      { 
       NextMondayDate = MyDate; 
       NextFridayDate = MyDate.AddDays(4); 
       Test = false; 
      } 

      else if (MyDate.DayOfWeek.ToString().ToUpper() == "FRIDAY") 
      { 
       NextFridayDate = MyDate; 
       NextMondayDate = MyDate.AddDays(3); 
       Test = false; 
      } 
      else 
      { 
       MyDate = MyDate.AddDays(1); 
      } 

     } 
+0

あなたのコードを少し説明できますか?ありがとう! – SkyeBoniwell

+0

原則はあなたの現在の日付をテストすることです:3つの場合が発生します: - 現在の日付が "Monday"の場合、金曜日の日付は月曜日+ 4日です。 (09/01/2017 == "月曜日")09/01/2017 + 4日= 13/01/2017 == "金曜日") 2-現在の日付が金曜日と等しい場合、同じ原則。この場合、月曜日の日付は金曜日の日付+ 3日です。 Exp(13/09/2017 ==金曜日)13/09/2017 + 3日= 16/09/2017 ==月曜日 3 - 現在の日付が(1または2)に該当しない場合は、1日追加する現在の日付とテストを再開します。 –

関連する問題