我如何获得“ jan-2018,Feb-2018,Mar-2018”作为下拉列表

时间:2018-10-23 11:07:19

标签: c# asp.net

如何在下拉列表中一起获取月份和年份,月份列表应显示接下来的3个月列表,例如,如果当前月份为2018年1月,则下拉列表应显示Jan-2018,Feb-2018,Mar- 2018。

有人可以建议我如何实现这一目标吗?

Jan-2018 
Feb-2018
Mar-2018

2 个答案:

答案 0 :(得分:1)

一种简单的方法是使用Enumerable.Range,并在GetMonthName中用DateTimeFormatInfo获取正确的月份名称

DropDownList1.DataSource = Enumerable.Range(1, 12).Select(i => new KeyValuePair<int, string>(i, DateTimeFormatInfo.CurrentInfo.GetMonthName(i).Substring(0, 3) + "-" + DateTime.Now.Year)).ToList();
DropDownList1.DataValueField = "key";
DropDownList1.DataValueField = "value";
DropDownList1.DataBind();

DDL的value字段仍然是1到12的整数,因此您可以轻松地在后面的代码中使用几个月。

更新

如果要从当月开始使用,请使用

Enumerable.Range(0, 11).Select(i => new KeyValuePair<int, string>(i, DateTimeFormatInfo.CurrentInfo.GetMonthName(DateTime.Now.AddMonths(i+1).Month).Substring(0, 3) + "-" + DateTime.Now.AddMonths(i).Year)).ToList();

答案 1 :(得分:0)

static IEnumerable<KeyValuePair<DateTime, string>> GetNextMonts(int number)
    {
        DateTime month = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
        for (int i = 0; i < number; i++)
        {
            month = month.AddMonths(1);
            yield return new KeyValuePair<DateTime, string>(month, month.ToString("MMM-yyyy"));
        }
    }

此代码返回下一个蒙特的可绑定列表。用作VDWWD的答案。