2014-08-30 18 views
0

我將部署一些每週更改的條件方法。一週中的條件基數(每週更改方法)

例如這是我的舊代碼:

DayOfWeek dow = DateTime.Now.DayOfWeek; 

      switch (dow) 
      { 
       case DayOfWeek.Friday: 
       ///Do something 
        break; 
       case DayOfWeek.Monday: 
       ///Do something 
        break; 
       case DayOfWeek.Saturday: 
       ///Do something 
        break; 
       case DayOfWeek.Sunday: 
       ///Do something 
        break; 
       case DayOfWeek.Thursday: 
       ///Do something 
        break; 
       case DayOfWeek.Tuesday: 
       ///Do something 
        break; 
       case DayOfWeek.Wednesday: 
       ///Do something 
        break; 
      } 

在上面的代碼,如果用戶調用我的每一天網址,就會得到我們會根據當天的特殊答案。

現在我想作出這樣一種方法:

  Condition week 1 
     { 
      //function 1 
     } 
     Condition Week 2 
     { 
      //function 2 
     } 
     Condition Week 3 
     { 
      //function 3 
     } 
     Condition Week 4 
     { 
      //function 1 
     } 
     Condition Week 5 
     { 
      //function 2 
     } 
     .......... 

如u可以看到3個星期後,我開始從開始運行/循環功能1至第6周,這將繼續

直到年底及之後。

我應該使用「Calendar.GetWeekOfYear」來實現這個目標嗎?

或者我應該用這種方法? :

 DateTime myDT = DateTime.Now; 
     GregorianCalendar myCal = new GregorianCalendar(); 
     if ((myCal.GetDayOfMonth(myDT) >= 1) && (myCal.GetDayOfMonth(myDT) < 8)) 
     { 
     Function 1 
     } 
     else if ((myCal.GetDayOfMonth(myDT) >= 8) && (myCal.GetDayOfMonth(myDT) < 15)) 
     { 
     Function 2 
     } 
     else if ((myCal.GetDayOfMonth(myDT) >= 15) && (myCal.GetDayOfMonth(myDT) < 22)) 
     { 
     Function 3 
     } 
     else if ((myCal.GetDayOfMonth(myDT) >= 22) && (myCal.GetDayOfMonth(myDT) < 31)) 
     { 
     Function 1 
     } 
+1

嘗試兩種方式,看看哪個最適合你。 – 2014-08-30 12:30:44

+0

@SonerGönül感謝您的回覆。對於第一個「GetWeekOfYear」,我找不到任何解決方案。和第二個,問題31天后,如果當月新增apear,就會啓動功能1再次,而不是函數2 :( – 2014-08-30 12:34:08

回答

1

使用GetWeekOfYear。它給你一些很好的靈活性,第一週如何定義,以及一週中的第一天應該是什麼。這裏是MSDN文檔。

class Program 
{ 
    static void Main(string[] args) 
    { 
     DateTimeFormatInfo dfi = DateTimeFormatInfo.CurrentInfo; 
     Calendar calendar = dfi.Calendar; 
     var week = calendar.GetWeekOfYear(DateTime.Now.AddDays(1), CalendarWeekRule.FirstDay, DayOfWeek.Sunday); 

     Console.Write(week); 
     Console.ReadLine(); 
    } 
}