Mantén la atención porque en este enunciado vas a hallar la respuesta que buscas.
Solución:
Para encontrar el próximo miércoles simplemente sigue agregando días hasta que encuentres uno. Para encontrar el miércoles anterior, sigue restando días hasta que llegues a uno.
DateTime nextWednesday = DateTime.Now.AddDays(1);
while (nextWednesday.DayOfWeek != DayOfWeek.Wednesday)
nextWednesday = nextWednesday.AddDays(1);
DateTime lastWednesday = DateTime.Now.AddDays(-1);
while (lastWednesday.DayOfWeek != DayOfWeek.Wednesday)
lastWednesday = lastWednesday.AddDays(-1);
Utilice la rutina AddDays:
// increment by the number of offset days to get the correct date
DayOfWeek desiredDay = DayOfWeek.Wednesday;
int offsetAmount = (int) desiredDay - (int) DateTime.Now.DayOfWeek;
DateTime lastWeekWednesday = DateTime.Now.AddDays(-7 + offsetAmount);
DateTime nextWeekWednesday = DateTime.Now.AddDays(7 + offsetAmount);
¡Deberias hacer eso!
NOTA: Si es un lunes, “Último miércoles” le dará el último miércoles que ocurrió, pero “Próximo miércoles” le dará el miércoles dentro de 9 días. Si quisiera obtener el miércoles en dos días, necesitaría usar el operador “%”. Eso significa que la segunda instrucción “la próxima semana” sería “(7 + cantidad de compensación) % 7”.
DateTime.Now.AddDays(7)
y DateTime.Now.AddDays(-7)
Así es como puedes hacer aritmética, asumiendo que estás en miércoles. Si no lo eres, lo que tendrías que hacer es usar el DayOfWeek
propiedad para determinar el número de días (positivos y negativos) que necesitaría para determinar qué día es ‘miércoles’. Entonces puedes pasar ese valor a AddDays
.
Por ejemplo, si hoy fuera martes, AddDays(-6)
para el miércoles pasado y AddDays(8)
para el proximo miercoles.
Te dejo la tarea de calcular esos.