8 votes

Trouver la date spécifique dans la semaine en cours

Comment pourrais-je obtenir la date du jeudi de la semaine en cours? Par exemple, le jeudi de cette semaine est le 7/8/2010

17voto

LBushkin Points 60611

Vous pouvez le faire (bien que maladroitement) avec le DateTime .NET existant. Le truc consiste à utiliser l'énumération DayOfWeek comme un entier - puisqu'elle désigne les jours de dimanche à samedi dans l'ordre numérique croissant (0-6).

DateTime someDay = DateTime.Today;
var daysTillThursday = (int)someDay.DayOfWeek - (int)DayOfWeek.Thursday;
var thursday = someDay.AddDays( daysTillThursday );

Ou encore plus simplement :

var today = DateTime.Today;
var thursday = today.AddDays(-(int)today.DayOfWeek).AddDays(4);

4voto

Curt Points 236
DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek).AddDays(4)

1voto

DanP Points 3311

Découvrez cette bibliothèque : http://datetimeextensions.codeplex.com/

À partir des exemples sur la page d'accueil :

DateTime nextFriday = DateTime.Now.Next(DayOfWeek.Friday);

1voto

ChaosPandion Points 37025
private static DateTime GetDayOfWeek(DayOfWeek dayOfWeek)
{
    var date = DateTime.Now;
    if (date.DayOfWeek != dayOfWeek)
    {
        var direction = date.DayOfWeek > dayOfWeek ? -1D : 1D;
        do
        {
            date = date.AddDays(direction);
        } while (date.DayOfWeek != dayOfWeek);
    }
    return date;
}

0voto

Dolph Points 12741

Code pseudo pour trouver le plus proche jeudi:

pour 0 à 3 comme x
    si aujourd'hui + x jours est jeudi
        retourner (aujourd'hui + x jours)
    si aujourd'hui - x jours est jeudi
        retourner (aujourd'hui - x jours)

Code pseudo pour trouver le jeudi de cette semaine:

regarderEnAvant = vrai
regarderEnArrière = vrai
PremierJourDeLaSemaine = Dimanche

pour 0 à 6 comme x
    si aujourd'hui + x jours est PremierJourDeLaSemaine
        regarderEnAvant = faux
    si aujourd'hui - x jours est PremierJourDeLaSemaine
        regarderEnArrière = faux
    si regarderEnAvant et aujourd'hui + x jours est jeudi
        retourner (aujourd'hui + x jours)
    si regarderEnArrière et aujourd'hui - x jours est jeudi
        retourner (aujourd'hui - x jours)

Désolé, je ne parle pas C# :)

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