procedure TForm1.Button1Click(Sender: TObject); const // Je pars du principe que la semaine 1 tu es du matin. DAY : array[0..2] of string = ('Matin', 'Après Midi', 'Soir'); var iNoSemaine : integer; iWeek : integer; index : integer; begin iNoSemaine := WeekOfTheYear(DateTimePicker1.Date); for index := 0 to 2 do begin iWeek := index + 1; while (iWeek <= 52) do begin if iWeek = iNoSemaine then begin ShowMessage(DAY[index]); exit; end; iWeek := iWeek + 3; end; end; end;
function WeekNumber(ADay: TDateTime): Integer; var Year, Month, Day: Word; WeekDay: integer; DumDay: TDateTime; diff, diff2: integer; begin DumDay := ADay; DecodeDate(DumDay, Year, Month, Day); DumDay := EncodeDate(Year, 1, 1); { first day of year } WeekDay := DayOfWeek(DumDay); if (WeekDay < 6) and (Weekday > 1) then { monday -> thursday } DumDay := DumDay - WeekDay + 2 else begin if WeekDay > 5 then DumDay := DumDay - WeekDay + 9; if WeekDay = 1 then DumDay := DumDay + 1; end; { DumDay points to monday in week number one } diff := Trunc(ADay - DumDay); if diff < 0 then begin Result := WeekNumber(ADay - 7) + 1; { last week of previous year } Exit; end; DumDay := EncodeDate(Year, 12, 31); { last day of year } WeekDay := DayOfWeek(DumDay); diff2 := Trunc(DumDay - ADay); if (diff2 < 3) and { one of last three days of year } (WeekDay > 1) and (WeekDay < 5) and { monday -> wednesday } (WeekDay > diff2 + 1) then begin Result := 1; { first week of next year } Exit; end; Result := diff div 7 + 1; end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question