2012-08-01 85 views
0

那麼我希望做的是讓未來六個月一個下拉框,我試圖像ASP.NET獲取未來6個月

 public List<String> GetTrainingDates() 
    { 
     var monthList = new List<String>(); 
     var currentMonth = DateTime.Now.Month; 
     for(var i = currentMonth; i <= currentMonth + 6; i++) 
     { 
      monthList.Add(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(i)); 
     } 
     return monthList; 
    } 

但ofcourse這正好大於12,所以會必須在12時重新啓動,然後再從1開始。

只是想知道如果有人有一個好主意該怎麼做?

+0

可能的重複:http://stackoverflow.com/questions/812330/what-is-the-best-way-to-code-up-a-month-and-year-drop-down-list-for-asp網絡 – Adil 2012-08-01 15:45:04

回答

3

只需使用% modulus operator

monthList.Add(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(
       ((i - 1) % 12) + 1)); 
+0

@freefaller - 調整爲'0'。 – Oded 2012-08-01 18:44:09

2
public List<String> GetTrainingDates() 
     { 
      var monthList = new List<String>(); 
      var currentDate = DateTime.Now(); 
      for(var i = 0; i <= 6; i++) 
      {    
       monthList.Add(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(currentDate.AddMonths(i).Month)); 
      } 
      return monthList; 
     } 
+0

這不會得到_next_ 6個月。就在一月至六月。 – Oded 2012-08-01 15:48:07

+0

@Oded請解釋一下嗎?我不同意。 – Curt 2012-08-01 15:48:43

+0

道歉 - 錯過了使用'DateTime.Now.AddMonths' – Oded 2012-08-01 15:56:02

0

使用DateTime類的.AddMonths功能...

public List<String> GetTrainingDates() 
{ 
    var monthList = new List<String>(); 
    var month; 
    for(var i = 1; i <= 6; i++) 
    { 
     month = DateTime.Now.AddMonths(i).Month; 
     monthList.Add(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month)); 
    } 
    return monthList; 
} 
0

簡單地說,你可以使用LINQ表達Range .... 。

List<string> listMonth = Enumerable.Range(1, 6).ToList() 
          .Select(i => CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(DateTime.Now.AddMonths(i).Month)) 
          .ToList();