![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() драсте подскажите как можно узнать дату ближайшего дня недели указаного списке дней недели
|
#2
|
|||
|
|||
![]() Чего-чего? Нифига непонятно.
Например, ближайший понедельник, что-ли? Ну дык DateUtils.DayOfWeek в помощь и помним, что DateTime+1 дает следующий день для DateTime. Т.е. для дат можно использовать целочисленную арифметику. ЗЫ. Алгоритм примерно такой. Смотрим какой сегодня день недели, вычисляем сколько надо дней до ближайшего искомого и просто это число прибавляем к текущей дате. |
#3
|
|||
|
|||
![]() спасибо за внимание
щас попробую подробней обьяснить че я хочу анологичная задача есть у планировщика там в задании указываеш дни недели когда нужно выполнять это задание наприме вторник четверг пятница и он показывает реальную дату ближайшего выполнения вот и я хочу сделать в своей програме аналогичный расчет ближайшего выполнения |
#4
|
||||
|
||||
![]() Ну тут все зависит от периода. Для недельного периода просто добавьте 7 дней к нужной вам дате. Для месячного периода немного сложнее, т.к. длина месяца варьируется от 28 до 31 дня, для годового тоже надо учитывать високосные года.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
![]() Страдалец, не совсем так.
Пусть сейчас понедельник, а событие должно произойти в четверг. Вот надо получить дату ближайшего четверга. Итак. Что мы, как специалисты, делаем. Мы знаем: 1. Текущую дату 2. День недели события. Надо: 1. Узнать на какую дату после текущей приходится ближайший "чеверг". Что используем: 1. Тип TDateTime, где в целой части находится кол-во дней после 1 янв 1900 (если не ошибаюсь) года (не важно, чему соотв. DateTime(0), важно, что там просто кол-во дней). 2. Функцию DayOfWeeek, которая возвращает норме дня недели, где понедельник=1 (есть еще одна, DayOfTheWeek, там первый день - воскресенье. ну если я ничего не попутал, лень в справку лезть). Итого: Код:
function GetNextDayOfWeekDate(ADay : Integer); var Current : TDateTime; CurrentDay : Integer; begin Current := Date; CurrentDay := DayOfWeek(Current); If CurrentDay = ADay // День недели совпадает Then Result := Current + 7 // или просто Current, если "сегодня" годится Else If CurrentDay > ADay Then Result := Current + (7 - (CurrentDay - ADay)) Else Result := Current + (ADay - CurrentDay); end; |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
SKIPtr (15.01.2016)
|
#6
|
|||
|
|||
![]() Цитата:
это есть в планеровщике он дает инфомацию в разделе время следующего запуска я могу дать команду для задания планеровщику но мне хотелось бы от планеровщика получить эту информацию но раз не могу приходиться это самому щитать |