Duplicar posibles:
How do I loop through a date range?día foreach en el mes
¿Hay una manera de hacer un bucle foreach para cada día en un mes específico?
pensar en algo así como
foreach (DateTime date in DateTime.DaysInMonth(2012, 1))
{
}
Duplicar posibles:
How do I loop through a date range?día foreach en el mes
¿Hay una manera de hacer un bucle foreach para cada día en un mes específico?
pensar en algo así como
foreach (DateTime date in DateTime.DaysInMonth(2012, 1))
{
}
puede escribir un método de ayuda con bastante facilidad:
public static IEnumerable<DateTime> AllDatesInMonth(int year, int month)
{
int days = DateTime.DaysInMonth(year, month);
for (int day = 1; day <= days; day++)
{
yield return new DateTime(year, month, day);
}
}
A continuación, llame con:
foreach (DateTime date in AllDatesInMonth(2012, 1))
Esto es probablemente demasiado para som Todo lo que está haciendo una vez, pero es mucho mejor que usar un bucle for
o algo similar si está haciendo esto mucho. Hace que su código diga solo lo que quiere lograr, en lugar de la mecánica de cómo lo está haciendo.
Intente utilizar un bucle en su lugar.
for (int i = 1; i <= DateTime.DaysInMonth(year, month); i++)
{
DateTime dt = new DateTime(year, month, i);
}
Puede hacerlo con un bucle simple:
DateTime first = new DateTime(2012, 1, 1);
for (DateTime current = first ; current.Month == first.Month ; current = current.AddDays(1)) {
}
Me encanta hacer uso de la capacidad a menudo descuidada de utilizar para bucles con tipos de datos distintos de int. –
se pueden usar van:
Enumerable
.Range(1, DateTime.DayInMonth(2012, 1)
.Select(i => new DateTime(2012, 1, i)))
.ToList() // ForEach is not a Linq to Sql method (thanks @Markus Jarderot)
.ForEach(day => Console.Write(day));
Es bastante fácil de generar una enumeración de días. Aquí hay una forma de hacerlo:
Enumerable.Range(1, DateTime.DaysInMonth(year, month)).Select(day =>
new DateTime(year, month, day))
¿Qué necesita para cada día? ¿Necesita una fecha completa o solo un valor numérico por cada día? – sll
De hecho, creo que sería genial si DateTime devolviera un IEnumerable para un intervalo de fechas solicitado. –
adelphus
@sll Estoy haciendo un calendario donde todo el año es visible, y donde la gente podría tomar notas en fechas únicas –