Эта строка вычисляет дату, которая является 4 днями после входной даты (ADate) и затем вычитывает день недели из нее (например, воскресенье = 1, понедельник = 2, ..., суббота = 7). Результат - новая дата, которая всегда находится на расстоянии не менее 4 дней от оригинальной даты.
DecodeDate извлекает год (Year), месяц (Month) и день (Day) компоненты из этой новой даты.
a. ADate - EncodeDate(Year, 1, 5) вычитывает дату 5 января (пятый день года) из входной даты.
b. DayOfWeek(EncodeDate(Year, 1, 3)) вычисляет день недели для даты 3 января (третий день года).
c. Добавляем результат шага b к результату шага a, эффективно смещая календарь на 5 января и считаем вперед оттуда.
d. Разделяем результат на 7, чтобы получить количество недель с 5 января.
e. trunc округляет вниз до ближайшего целого значения.
f. Добавляем 1 к результату (поскольку неделя 0 не обычно используется) для получения номера текущей недели.
* Функция возвращает это рассчитанное значение как целочисленное (word).
В статье описывается функция WeekNum, которая определяет номер текущей недели на основе указанной даты.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.