以MMM yyyy格式迭代DateTime

时间:2017-08-07 09:32:57

标签: c# datetime

我有几个DateTime startTimeendTime。我希望他们采用MMM yyyy格式(" 2017年8月和#34;)但是如果我解析它们ToString,我就无法循环,因为它现在是一个字符串,没有AddMonths方法。例如:

 var formattedStartTime = startTime.ToString("MMMM yyyy");
 var formattedEndTime = endTime.ToString("MMMM yyyy");
 for (var date = formattedStartTime; date < formattedEndTime; date = date.AddMonths(1)) // nope

我如何解析变量并在两个日期之间每个月循环一次?

1 个答案:

答案 0 :(得分:3)

通过调用ToString,您显然 将您的日期转换为字符串,该字符串对其所代表的原始日期一无所知,因此也无法执行任何与日期相关的操作。

解决方案是在实际显示对象时简单地转换为字符串

for (var date = startTime; date < endTime; date = date.AddMonths(1))
{
    Console.WriteLine(date.ToString("MMM yyyy"));
}

请注意这些日期比较,因为根据startTimeendTime中的实际日期和时间组件,您可能会跳过或包含您不期望的结果。

例如,对于startTime = new DateTime(2017, 1, 2)endTime = new DateTime(2017, 2, 3)(2月3日),你会得到2月的结果,但是endTime = new DateTime(2017, 2, 1)(2月1日)你不会。