Попробуйте это:
static IEnumerable<DateTime> monthsBetween(DateTime d0, DateTime d1)
{
return Enumerable.Range(0, (d1.Year - d0.Year) * 12 + (d1.Month - d0.Month + 1))
.Select(m => new DateTime(d0.Year, d0.Month, 1).AddMonths(m));
}
Это включает в себя как начальный, так и конечный месяц. Он определяет, сколько существует месяцев, а затем создает новый DateTime
на основе года и месяца d0
. Это означает, что месяцы похожи на yyyy-MM-01
. Если вы хотите, чтобы оно включало время и день d0
, вы можете заменить new DateTime(d0.Year, d0.Month, 1).AddMonths(m)
на d0.AddMonths(m)
.
Я вижу, что вам нужен массив, в этом случае вы просто используете monthsBetween(..., ...).ToArray()
или ставите .ToArray()
внутри метода.