2014-10-08 184 views
0

作爲一個項目的一部分,我試圖創建一個日曆在Asp.net純粹從代碼隱藏與C# 我使用中繼器和填充內容從codebehind這是工作正常。我可以使用Datetime獲取今天的日期月份等。Asp.net日曆 - 生成日期

但是,當我試圖計算一週中前幾天和下一天的日期時,代碼變得非常混亂,我想知道是否有更好的方法去做吧。

目前這是我如何生成特定日子的日期。

if (today == "Monday" || today.Equals("Monday")) 
      { 
      switch (days) 
       { 
        case "0": 
         return DateTime.Today.AddDays(0).ToString("dd"); 
        case "1": 
         return DateTime.Today.AddDays(1).ToString("dd"); 
        case "2": 
         return DateTime.Today.AddDays(2).ToString("dd"); 
        case "3": 
         return DateTime.Today.AddDays(3).ToString("dd"); 
        case "4": 
         return DateTime.Today.AddDays(4).ToString("dd"); 
        case "5": 
         return DateTime.Today.AddDays(5).ToString("dd"); 
        case "6": 
         return DateTime.Today.AddDays(6).ToString("dd"); 
        default: 
         return "error"; 
       } 
      } 

然後週二

else if (today == "Tuesday" || today.Equals("Tuesday")) 
      { 
       switch (days) 
       { 
        case "0": 
         return DateTime.Today.AddDays(-1).ToString("dd"); 
        case "1": 
         return DateTime.Today.AddDays(0).ToString("dd"); 
        case "2": 
         return DateTime.Today.AddDays(1).ToString("dd"); 
        case "3": 
         return DateTime.Today.AddDays(2).ToString("dd"); 
        case "4": 
         return DateTime.Today.AddDays(3).ToString("dd"); 
        case "5": 
         return DateTime.Today.AddDays(4).ToString("dd"); 
        case "6": 
         return DateTime.Today.AddDays(5).ToString("dd"); 
        default: 
         return "error"; 
       } 
      } 

所以在週二的例子中,「0」時是週一,因此,如果它是星期二,我減去1日,從當前日期獲取日期前一天。代碼工作得很好,但我忍不住要想一定有更好的辦法

而且我必須爲每週的每一天創建這段代碼,唯一真正改變的是「 AddDays()「

也注意到了開關的原因,就是所有if語句都在for循環中調用,因此在開關中出現了奇怪的情況。

如果有人比我更聰明有一個更簡單的方法來完成這個請隨時讓我知道。

  • 最好的問候Andreas Hald。

回答

0

我並不十分了解的日子變量的含義,但我認爲是要後退或前進 你可以簡單地使用下面的代碼的天數:

return DateTime.Today.AddDays(days + todayDateTime.DayOfWeek).ToString("dd"); 

然後,您可以使用「天」變量控制下一天和前一天,即1或-1。 它有道理嗎?

+0

這將是正確的是,對不起,如果我沒有足夠的澄清。 days變量只是for循環中的計數器變量,我沒有包括,交換機中的不同情況不是需要向前或向後移動的天數,而是表示需要日期的那一天。我現在意識到它可能被愚蠢地命名爲 – 2014-10-08 10:17:52

+0

因此,在這種情況下,您可以將我的代碼更改爲:days +(DayOfWeek.Monday - todayDateTime.DayOfWeek)//如果天數= 0且星期一todayDateTime.DayOfWeek - > 1返回0 + 1-1 = 0 天+(DayOfWeek.Monday - todayDateTime.DayOfWeek)//在天數= 1和星期一todayDateTime.DayOfWeek - > 1的情況下返回1 + 1-1 = 1 days +(DayOfWeek .Monday - todayDateTime.DayOfWeek)//如果天數= 0且星期二todayDateTime.DayOfWeek - > 2返回0 + 1-2 = -1 天+(DayOfWeek.Monday - todayDateTime.DayOfWeek)//在天數= 1,星期二todayDateTime.DayOfWeek - > 2,返回1 + 1-2 = 0 – Bonomi 2014-10-08 10:38:05