0

所以我想做的是在下拉框中获得未来六个月,我正在尝试类似的东西

        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;
    }

但是当然这会大于 12,所以必须在 12 重新开始,然后再从 1 开始。

只是想知道是否有人知道如何做到这一点?

4

4 回答 4

3

只需使用%模运算符

monthList.Add(CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(
               ((i - 1) % 12) + 1));
于 2012-08-01T15:44:05.273 回答
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;
        }
于 2012-08-01T15:44:16.643 回答
0

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

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;
}
于 2012-08-01T15:44:52.303 回答
0

简单地说,你可以使用LINQ表达式Range......

 List<string> listMonth = Enumerable.Range(1, 6).ToList()
                             .Select(i => CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(DateTime.Now.AddMonths(i).Month))
                             .ToList();
于 2012-08-01T16:40:19.840 回答