您可以使用類月的的:
// ----------------------------------------------------------------------
public Dictionary<DateTime,int> CountMonthDays(DateTime start, DateTime end)
{
Dictionary<DateTime,int> monthDays = new Dictionary<DateTime, int>();
Month startMonth = new Month(start);
Month endMonth = new Month(end);
if (startMonth.Equals(endMonth))
{
monthDays.Add(startMonth.Start, end.Subtract(start).Days);
return monthDays;
}
Month month = startMonth;
while (month.Start < endMonth.End)
{
if (month.Equals(startMonth))
{
monthDays.Add(month.Start, month.DaysInMonth - start.Day + 1);
}
else if (month.Equals(endMonth))
{
monthDays.Add(month.Start, end.Day);
}
else
{
monthDays.Add(month.Start, month.DaysInMonth);
}
month = month.GetNextMonth();
}
return monthDays;
} // CountMonthDays
用法:
// ----------------------------------------------------------------------
public void CountDaysByMonthSample()
{
DateTime start = new DateTime(2011, 3, 30);
DateTime end = new DateTime(2011, 4, 5);
Dictionary<DateTime, int> monthDays = CountMonthDays(start, end);
foreach (KeyValuePair<DateTime, int> monthDay in monthDays)
{
Console.WriteLine("month {0:d}, days {1}", monthDay.Key, monthDay.Value);
}
// > month 01.03.2011, days 2
// > month 01.04.2011, days 5
} // CountDaysByMonthSample
你的意思是{ 3,2},{4,5}?另外,這些日子是否應該連續兩個月?如果不是,如果這兩個日期跨越幾年,該怎麼辦?字典的關鍵字是年份還是月份? – 2011-06-17 08:01:48
你是指'{3 => 2,4 => 5}'?字典中不能有兩次相同的密鑰。 – carlosfigueira 2011-06-17 08:02:44
@Paolo:對,對不起。謝謝。 – 2011-06-17 08:02:45