bu deneyin:
Bu başlangıç ayı ve bitiş ay içerir
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));
}
. Bu, kaç ay olduğunu bulur ve ardından d0
´s yıl ve ay bazında yeni bir DateTime
oluşturur. Yani aylar yyyy-MM-01
gibi. d0
saatini ve gününü içermesini istiyorsanız, new DateTime(d0.Year, d0.Month, 1).AddMonths(m)
'u d0.AddMonths(m)
ile değiştirebilirsiniz.
Bir diziye ihtiyacınız olduğunu görüyorum, bu durumda yalnızca monthsBetween(..., ...).ToArray()
kullanın veya yöntemin içine .ToArray()
ekleyin.
private static IEnumerable<DateTime> ByMonths(DateTime startDate, DateTime endDate)
{
DateTime cur = startDate;
for(int i = 0; cur <= endDate; cur = startDate.AddMonths(++i))
{
yield return cur;
}
}
ve bir dizi istiyorsanız o zaman bizim ToArray()
çağrı:
Bir 'Months' özelliği nasıl çalışır? Hangi Ayın günlerini kullanacağını nasıl bilebilirdi? Çıkarmadan sonra, tarih-nötr olan bir TimeSpan ile kaldınız ve böylece hangi ayların kullanılacağı hakkında hiçbir şey bilmiyorsunuz. –
olası [Ayın farkı] (http: // stackoverflow) kopyası.com/questions/1525990/aydaki fark) –
'.Days, gerçek günler değil, aralıktaki ** ** gün sayısını döndürür. "Bir ay 2 tarih arasında *" gerçeğini nasıl tanımlarsınız? Bu aradaki ayda ** en az 1 gün ** var mı? Ay, aradaki ** tüm günlerdir **? Ayrıca 'DateTime' yapısını kullanarak bir ayı nasıl temsil etmelisiniz? - ayın ilk günü olarak mı? – CyberDude