Aquí vamos
public static IEnumerable<Tuple<string, int>> MonthsBetween(
DateTime startDate,
DateTime endDate)
{
DateTime iterator;
DateTime limit;
if (endDate > startDate)
{
iterator = new DateTime(startDate.Year, startDate.Month, 1);
limit = endDate;
}
else
{
iterator = new DateTime(endDate.Year, endDate.Month, 1);
limit = startDate;
}
var dateTimeFormat = CultureInfo.CurrentCulture.DateTimeFormat;
while (iterator <= limit)
{
yield return Tuple.Create(
dateTimeFormat.GetMonthName(iterator.Month),
iterator.Year);
iterator = iterator.AddMonths(1);
}
}
Y es obvio que llamamos como esto
var startDate = DateTime.ParseExact("01/01/2011", "MM/dd/yyyy");
var endDate = DateTime.ParseExact("11/30/2011", "MM/dd/yyyy");
var months = MonthsBetween(startDate, endDate);
Los resultados deben ser algo así como
{
{ "January", 2011 },
{ "February", 2011 },
{ "March", 2011 },
{ "April", 2011 },
{ "May", 2011 },
{ "June", 2011 },
{ "July", 2011 },
{ "August", 2011 },
{ "September", 2011 },
{ "October", 2011 },
{ "November", 2011 },
}
Los nombres de los meses se efectúe en función de su cultura que , Creo, es exactamente lo que pediste, ¿verdad?
Esto suena como una pregunta de tarea. La idea es que trabajes este para ti. Si tienes algún problema específico con la solución que encuentres, estaré encantado de ayudarte. –
Duplicado: http://stackoverflow.com/questions/1525990/difference-in-months – h1ghfive
@h1ghfive - no, no es un duplicado de ese – PHeiberg