ASP.NET未来6个月

时间:2012-08-01 15:40:26

标签: asp.net datetime

所以我要做的是在未来的六个月内进入下拉框,我正在尝试类似的事情

        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 个答案:

答案 0 :(得分:3)

只需使用% modulus operator

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

答案 1 :(得分: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;
        }

答案 2 :(得分: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;
}

答案 3 :(得分:0)

简单地说,您可以将LINQ表达式与Range .....

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