获取当前月份的列表,但是在当月之前的月份

时间:2013-03-08 14:15:22

标签: c# asp.net c#-4.0 .net-4.0

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

就像现在一样是2013年3月,然后列表应该包含2013年1月和2013年2月。当4月开始时,它应该有1月1日,2月,3月。

6 个答案:

答案 0 :(得分:4)

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

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

Demo

答案 2 :(得分:1)

除了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"));

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

答案 4 :(得分:0)

试试这个:

 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();

答案 5 :(得分:0)

您可以通过

获得当前月份
DateTime.Today.Month;

3月为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));
}