Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить номер недели по дате

Delphi , Синтаксис , Дата и Время

Получить номер недели по дате

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

var
   FirstWeekDay: Integer = 2;
   { Wochentag, mit dem die Woche beginnt 
   (siehe Delphi-Wochentage) 
   2 : Montag (nach DIN 1355) }
   FirstWeekDate: Integer = 4;
   { 1 : Beginnt am ersten Januar 
    4 : Erste-4 Tage-Woche (nach DIN 1355) 
    7 : Erste volle Woche }

   { liefert das Datum des ersten Tages der Woche }
   { get date of first day of week}
 function WeekToDate(AWeek, AYear: Integer): TDateTime;
 begin
   Result := EncodeDate(AYear, 1, FirstWeekDate);
   Result := Result + (AWeek - 1) * 7 - ((DayOfWeek(Result) + (7 - FirstWeekDay)) mod 7);
 end;

 { liefert die Wochennummer und das Jahr, zu dem die Woche gehort }
 { get weeknumber and year of the given week number}
 procedure DateToWeek(ADate: TDateTime; var AWeek, AYear: Word);
 var
   Month, Day: Word;
 begin
   ADate := ADate - ((DayOfWeek(ADate) - FirstWeekDay + 7) mod 7) + 7 - FirstWeekDate;
   DecodeDate(ADate, AYear, Month, Day);
   AWeek := (Trunc(ADate - EncodeDate(AYear, 1, 1)) div 7) + 1;
 end;


 {Week to date example}
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   ShowMessage(FormatDateTime('dd.mm.yyyy', WeekToDate(51, 2000)));
 end;

 {Date to week example}
 procedure TForm1.Button2Click(Sender: TObject);
 var
   week, year: Word;
 begin
   DateToWeek(now, week, year);
   ShowMessage(IntToStr(week));
   ShowMessage(IntToStr(year));
 end;

Привет! Вот перевод текста на русский язык:

Функция WeekToDate:

Эта функция принимает два параметра: AWeek (целочисленное значение, представляющее собой номер недели) и AYear (целочисленное значение, представляющее собой год). Она возвращает значение типа TDateTime, которое является объектом даты-времени в Delphi.

Функция рассчитывает дату начала недели, используя функцию EncodeDate для создания даты из заданного года и месяца (январь), а затем добавляет смещение между началом недели (определенным константой FirstWeekDay, равной 2 для понедельника) и фактическим началом недели.

Остальная часть расчетаinvolve subtracting the day of the week (using the DayOfWeek function) from the result to get the correct date.

Функция DateToWeek:

Эта процедура принимает значение типа TDateTime в качестве входного параметра и выводит два значения: AWeek (слово, представляющее собой номер недели) и AYear (слово, представляющее собой год).

Процедура сначала корректирует дату ввода, чтобы она соответствовала началу недели, вычитывая смещение между текущим днем недели и началом недели.

Затем она использует функцию DecodeDate для извлечения месяца, дня и года из корректированной даты. Номер недели рассчитывается как целочисленное деление корректированной даты минус 1 января года (январь) на 7, плюс 1.

Примеры:

Код предоставляет два примера процедур:

  • Button1Click: демонстрирует использование функции WeekToDate для конвертации номера недели и года в конкретную дату. В этом случае она конвертирует неделю 51 года 2000 в соответствующую дату (25 декабря 2000).
  • Button2Click: демонстрирует использование процедуры DateToWeek для извлечения номера недели и года из текущей даты.

В целом, эти функции предоставляют удобный способ работы с номерами недель в Delphi.

В статье описывается алгоритм для определения номера недели по дате и наоборот, а также примеры его реализации на языке Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Дата и Время ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:13:29/0.0036530494689941/0