我有几个DateTime
startTime
和endTime
。我希望他们采用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
我如何解析变量并在两个日期之间每个月循环一次?
答案 0 :(得分:3)
通过调用ToString
,您显然 将您的日期转换为字符串,该字符串对其所代表的原始日期一无所知,因此也无法执行任何与日期相关的操作。
解决方案是在实际显示对象时简单地转换为字符串 :
for (var date = startTime; date < endTime; date = date.AddMonths(1))
{
Console.WriteLine(date.ToString("MMM yyyy"));
}
请注意这些日期比较,因为根据startTime
和endTime
中的实际日期和时间组件,您可能会跳过或包含您不期望的结果。
例如,对于startTime = new DateTime(2017, 1, 2)
和endTime = new DateTime(2017, 2, 3)
(2月3日),你会得到2月的结果,但是endTime = new DateTime(2017, 2, 1)
(2月1日)你不会。