如何使用Datetime创建月份和年份

Eri*_*sen 0 c#

我想创建这样的东西:

2013年5月,2013

3月,2013年
2月,2013年
1月,2013年
12月,2012年
11月,2012年

我写的是这样的:

var currentDate = DateTime.Now;
var list = new List<ArchiveViewModel>();
for (var startDate = new DateTime(2013, 1, 1); startDate.Month <= currentDate.Month; startDate = startDate.AddMonths(1))
{
    list.Add(new ArchiveViewModel
                {
                    Month = startDate.Month,
                    Year = startDate.Year,
                    FormattedDate = startDate.ToString("MMMM, yyyy")
                });
}
Run Code Online (Sandbox Code Playgroud)

和ArchiveViewModel是这样的:

public class ArchiveViewModel
{
    public int Month { get; set; }
    public int  Year { get; set; }

    public string  FormattedDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是,它只创建特定年份(2012年或2013年)的几个月:

January, 2013
February, 2013
March, 2013
April, 2013
May, 2013
Run Code Online (Sandbox Code Playgroud)

如果我将startDate更改为(2012,1,1),它将创建:

January, 2012
February, 2012
March, 2012
April, 2012
May, 2012
Run Code Online (Sandbox Code Playgroud)

但我想要的是这个:

November,2012
December , 2012
January, 2013
February, 2013
March, 2013
April, 2013
May, 2013
Run Code Online (Sandbox Code Playgroud)

gho*_*ord 5

只需更改你的for循环条件

startDate.Month <= currentDate.Month
Run Code Online (Sandbox Code Playgroud)

startDate <= currentDate
Run Code Online (Sandbox Code Playgroud)