【问题标题】:how to work with Datetime to create month and year如何使用 Datetime 创建月份和年份
【发布时间】:2013-05-09 15:14:03
【问题描述】:

我想创建这样的东西:

2013 年 5 月
2013 年 4 月
2013 年 3 月
2013 年 2 月
2013 年 1 月
2012 年 12 月
2012 年 11 月

我写的是这样的:

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")
                });
}

ArchiveViewModel 是这样的:

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

    public string  FormattedDate { get; set; }
}

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

January, 2013
February, 2013
March, 2013
April, 2013
May, 2013

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

January, 2012
February, 2012
March, 2012
April, 2012
May, 2012

但我想要的是这样的:

November,2012
December , 2012
January, 2013
February, 2013
March, 2013
April, 2013
May, 2013

【问题讨论】:

    标签: c#


    【解决方案1】:

    只需更改您的 for 循环条件

    startDate.Month <= currentDate.Month
    

    startDate <= currentDate
    

    【讨论】:

      【解决方案2】:

      试试

      var currentDate = new DateTime (DateTime.Now.Year, DateTime.Now.Month, 1);
      

      for (var startDate = new DateTime(2012, 11, 1); startDate <= currentDate; startDate = startDate.AddMonths(1))
      

      【讨论】:

        【解决方案3】:

        你的问题是你的 for 循环中的停止条件

        startDate.Month <= currentDate.Month;
        

        currentDate 是一个常数,在这种情况下,currentDate.Month 始终为 5。这使得条件等价于

        startDate.Month <= 5;
        

        如果您尝试晚于 5 月开始(例如,开始日期在 7 月),则根本不会循环。

        我会扩展停止条件以考虑年份。像这样的:

        startDate.Month <= currentDate.Month || startDate.Year < currentDate.Year;
        

        这样,它可以在 2012 年 5 月之后循环(因为年份仍然会更少),但会在 2013 年 5 月停止。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-07
          相关资源
          最近更新 更多