Comment puis-je obtenir la date de mardi prochain ? En PHP, c’est aussi simple que `` . Comment est-ce que je peux réaliser quelque chose de semblable dans .NET
Réponses
Trop de publicités?Comme je l'ai mentionné dans les commentaires, il y a différentes choses que vous pourriez dire par "mardi prochain", mais ce code vous donne "le mardi prochain afin de se produire, ou aujourd'hui si c'est déjà mardi":
DateTime today = DateTime.Today;
// The (... + 7) % 7 ensures we end up with a value in the range [0, 6]
int daysUntilTuesday = ((int) DayOfWeek.Tuesday - (int) today.DayOfWeek + 7) % 7;
DateTime nextTuesday = today.AddDays(daysUntilTuesday);
Si vous voulez donner "une semaine de temps" si ce n'est déjà mardi, vous pouvez utiliser:
// This finds the next Monday (or today if it's Monday) and then adds a day... so the
// result is in the range [1-7]
int daysUntilTuesday = (((int) DayOfWeek.Monday - (int) today.DayOfWeek + 7) % 7) + 1;
... ou vous pouvez utiliser la formule d'origine, mais à partir de demain:
DateTime tomorrow = DateTime.Today.AddDays(1);
// The (... + 7) % 7 ensures we end up with a value in the range [0, 6]
int daysUntilTuesday = ((int) DayOfWeek.Tuesday - (int) tomorrow.DayOfWeek + 7) % 7;
DateTime nextTuesday = tomorrow.AddDays(daysUntilTuesday);
EDIT: Juste pour faire de ce gentil et polyvalent:
public static DateTime GetNextWeekday(DateTime start, DayOfWeek day)
{
// The (... + 7) % 7 ensures we end up with a value in the range [0, 6]
int daysToAdd = ((int) day - (int) start.DayOfWeek + 7) % 7;
return start.AddDays(daysToAdd);
}
Donc, pour obtenir la valeur de "aujourd'hui ou dans les 6 prochains jours":
DateTime nextTuesday = GetNextWeekday(DateTime.Today, DayOfWeek.Tuesday);
Pour obtenir la valeur de "le mardi prochain à l'exclusion d'aujourd'hui":
DateTime nextTuesday = GetNextWeekday(DateTime.Today.AddDays(1), DayOfWeek.Tuesday);