-3

如何获取当年月份的列表,但该列表应该只有当前月份之前的月份。

就像现在是 2013 年 3 月,那么列表应该包含 2013 年 1 月和 2013 年 2 月。当 4 月开始时,它应该有 1 月、2 月、3 月。

4

6 回答 6

4
Enumerable.Range(1, DateTime.Today.Month - 1)
    .Select(m => new DateTime(DateTime.Today.Year, m, 1))
    .ToList();
于 2013-03-08T14:18:51.633 回答
3

也许:

var today = DateTime.Today;
var beforeMonths = Enumerable.Range(1, 12)
            .Where(i => i < today.Month)
            .Select(i => new DateTime(today.Year, i, 1))
            .ToList();

演示

于 2013-03-08T14:18:00.873 回答
1

除了一月份的结果返回一个空列表(这可能是你想要的)之外,你可以使用:

Enumerable.Range(1,DateTime.Today.Month - 1)
          .Select(i => new DateTime(DateTime.Today.Year,i,1));

或者如果您希望字符串表示使用

Enumerable.Range(1,DateTime.Today.Month - 1)
          .Select(i => new DateTime(DateTime.Today.Year,i,1)
                           .ToString("MMM yyyy"));
于 2013-03-08T14:19:13.783 回答
1

试试这个:

 var x = new[]
        {"Jan", "Feb", "Mar", 
         "Apr", "May", "Jun", 
         "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"}.Take
         (DateTime.Today.Month-1);

或者如果你想要一个具体的清单,

 var x = new[]
        {"Jan", "Feb", "Mar", 
         "Apr", "May", "Jun", 
         "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"}.Take
         (DateTime.Today.Month-1).ToList();
于 2013-03-08T14:26:56.630 回答
0

这会给你一个月

    static void Main(string[] args)
    {
        var months =
            Enumerable.Range(1, DateTime.Now.Month-1).Select(
                p => new DateTime(DateTime.Now.Year, p, 1));

        foreach(var month in months)
            Console.WriteLine(month.ToString("MMM yyyy"));

        Console.ReadLine();
    }
于 2013-03-08T14:21:38.340 回答
0

你得到当前月份

DateTime.Today.Month;

三月是3。

然后你可以从 0 循环到 DateTime.Today.Month 增加月份。

List<DateTime> months = new List<DateTime>();

for (int i = 0; i < DateTime.Now.Month; ++i)
{
     months.Add(new DateTime(DateTime.Now.Year, i, 1));
}
于 2013-03-08T14:28:50.670 回答