59 votes

Obtenir la date du premier jour de la semaine

Je me demandais si vous saviez comment obtenir la date du lundi de la semaine de courants en fonction de la date d'aujourd'hui?

c'est-à-dire que le 2009-11-03 est passé et que le 2009-11-02 est renvoyé

/ M

129voto

Pondidum Points 6541

C'est ce que j'utilise (probablement pas internationalisé):

 DateTime input = //...
int delta = DayOfWeek.Monday - input.DayOfWeek;
DateTime monday = input.AddDays(delta);
 

58voto

Marco Points 401

La réponse Pondium peut rechercher en avant dans certains cas. Si vous voulez seulement une recherche arrière, je pense que cela devrait être:

 DateTime input = //...
int delta = DayOfWeek.Monday - input.DayOfWeek;
if(delta > 0)
    delta -= 7;
DateTime monday = input.AddDays(delta);
 

6voto

PaulB Points 6104

Quelque chose comme ça marcherait

 DateTime dt = DateTime.Now;
while(dt.DayOfWeek != DayOfWeek.Monday) dt = dt.AddDays(-1);
 

Je suis sûr qu'il existe un moyen plus agréable que :)

4voto

 public static class DateTimeExtension
{
    public static DateTime GetFirstDayOfWeek(this DateTime date)
    {
        var firstDayOfWeek = CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;

        while (date.DayOfWeek != firstDayOfWeek)
        {
            date = date.AddDays(-1);
        }

        return date;
    }
}
 

International ici. Je pense qu’en extension cela peut être plus utile.

3voto

Gh61 Points 348

Qu'en est-il de:

 CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek
 

Pourquoi ne pas utiliser de solution native?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X