2013-05-02 59 views
0

创建循环链接我只是想创建一个文本(链接)这样的事情了一年的每个月如何通过日期时间

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

做到这一点我已经创造了这个for循环

var start = DateTime.Now; 
var end = DateTime.Now.AddYears(20); 

for (DateTime time = start; time <= end; time = time.AddMonths(1)) 
{ 
    //month and year 
} 

,但我不知道,因为它不工作:(

+1

应该工作。你会得到什么错误,并确切地说是什么? – 2013-05-02 12:54:09

+0

应*不*工作。他应该终止循环的'end'在20 *年结束* – tnw 2013-05-02 12:55:52

+0

我不确定代码,因为我想比较现在的日期并创建一个新的月份的新行 – 2013-05-02 12:56:10

回答

0

喜欢的东西:

DateTime endDate = new DateTime(2013, 12, 31); 
List<string> list = new List<string>(); 
for (DateTime startDate = new DateTime(2013, 1, 1); startDate.Month <= endDate.Month; startDate = startDate.AddMonths(1)) 
{ 
    list.Add(startDate.ToString("MMMM, yyyy")); 
    if (startDate.Month == endDate.Month) 
     break; 
} 

对于输出:

foreach(string str in list) 
    Console.WriteLine(str); 

输出将是:

January, 2013 
February, 2013 
March, 2013 
April, 2013 
May, 2013 
June, 2013 
July, 2013 
August, 2013 
September, 2013 
October, 2013 
November, 2013 
December, 2013 
+0

这两个月的第一天是不是会相同,并且忽略所需年数? – Ash 2013-05-02 12:59:12

+0

谢谢,似乎是正确的,但在测试之前,我不得不说我想为每个人创造它! (以后几年)不仅在2013年,我如何编辑上面的代码来做到这一点? – 2013-05-02 12:59:44

+0

@EricNielsen,相应地指定年份。 – Habib 2013-05-02 13:00:20

0

您可以使用MMMM拿到个月。

public IEnumerable<string> GetMonthsOfYear(DateTime startDate, TimeSpan timeSpan) 
{ 
    var end = startDate.Add(timeSpan); 

    for (DateTime time = startDate; time <= end; time = time.AddMonths(1)) 
    { 
     yield return time.ToString("MMMM, yyyy"); 
    } 
} 

用法:

var start = DateTime.Now; 
var monthsOfYear = GetMonthsOfYear(start, start.AddYears(20) - start);