2017-08-07 77 views
-2

我有一对DateTimestartTimeendTime。我希望他们能够使用MMM yyyy格式(“2017年8月”),但如果我解析他们ToString,我无法循环,因为现在它是一个字符串,没有AddMonths方法。例如:在MMM中对日期时间进行迭代yyyy格式

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

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

+4

为什么不只是在需要时循环'startTime'和'endTime'并将其格式化为字符串? –

回答

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日)您不会。

相关问题