// This function will return the next saturday for a datetime
DateTime NextSaturday(DateTime now)
{
while (now.DayOfWeek != DayOfWeek.Saturday)
now = now.AddDays(1);
return now;
}
ACTUALIZACIÓN
Después de casi 2 años que quieren cambiar esta respuesta.
En estos días nunca crearía una "función de utilidad" para class
. Ahora siempre "extiendo" la clase. La firma ahora debe ser DateTime.Next(DayOfWeek)
. Consulte http://msdn.microsoft.com/en-us/library/vstudio/bb383977.aspx para obtener más detalles sobre las extensiones.
También la lógica es incorrecta. Si now
es un sábado, siempre devolverá la fecha actual. Creo que la mayoría de las personas que llaman esperarán que regrese now
+ 7 días. Por lo que el primer cambio es:
DateTime NextSaturday(DateTime now)
{
do {
now = now.AddDays(1);
} while (now.DayOfWeek != DayOfWeek.Saturday)
return now;
}
a continuación, cambiar la función de trabajar con cualquier día de la semana:
DateTime Next(DateTime now, DayOfWeek nextDay)
{
do {
now = now.AddDays(1);
} while (now.DayOfWeek != nextDay)
return now;
}
Ahora "extender" la clase DateTime para apoyar siguiente (DayOfWeek)
namespace DateTime.Extensions
{
public static class DateTimeExtensions
{
public static DateTime Next(this DateTime now, DayOfWeek nextDay)
{
do {
now = now.AddDays(1);
} while (now.DayOfWeek != nextDay)
return now;
}
}
}
@scrum es más eficiente (+1) que mi respuesta (@richard). Pero creo que el mío es más sostenible. –
@ richard-schneider Thx, es casi siempre el movimiento correcto para tomar "mantenible" por sobre "eficiencia" –