powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Определение даты
11 сообщений из 11, страница 1 из 1
Определение даты
    #40077204
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помогите Пожалуйста определить программно. например:
третье воскресение июня текущего (и т.д.) года (День медработника)
пока признаться - прописываю в коде ручками на каждый год.
Заранее Благодарю.
...
Рейтинг: 0 / 0
Определение даты
    #40077240
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмila,
Код: sql
1.
?Date(Year(Date()), 7 , 1)+21-Dow(Date(Year(Date()), 7 , 1), 2)


подставить вместо Year(Date()) нужный год.
...
Рейтинг: 0 / 0
Определение даты
    #40077322
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напрягла мозги и оказалось! что:
Код: sql
1.
DOW(Date())=1 and BETW(DAY(Date()),15,21)

и есть третье воскресенье месяца, выходит:
Код: sql
1.
Month(Date())=6 and DOW(Date())=1 and BETW(DAY(Date()),15,21)

- третье воскресенье июня - День Медработника!
...
Рейтинг: 0 / 0
Определение даты
    #40077377
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно, конечно, но есть нюанс Что есть первый день недели определяет настройка

SET FDOW TO

и по умолчанию - это воскресенье, а вовсе не понедельник. Американцы же...

В данном случае, лучше все-таки вести календарь. Т.е. таблицу, где одна запись - это один день. Завести сразу лет на 10 (всего 3,5 тысячи строк). Многие операции с датами существенно упростятся
...
Рейтинг: 0 / 0
Определение даты
    #40077391
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуу, тогда конкретно!
Код: sql
1.
DOW(Date(),1)=1  && Воскресенье

и никакое значение SET FDOW TO не повлияет (проверено!)
Предложение создать таблицу мне не подходит т.к. нужна 3 раза в году для появлении в программе заставки-поздравлении с Новым Годом, 8 Марта и днем Медработника в соответствующий диапазон дат.
По дню Медика переделала на
Код: sql
1.
MONTH(_Diarydate)=6 AND BETW(_Diarydate,Date(Year(_Diarydate),6,1)+21-Dow(Date(Year(_Diarydate),6,1),2)-3,Date(Year(_Diarydate),6,1)+21-Dow(Date(Year(_Diarydate),6,1),2))

в июне 2021г. 17-20 числа будет висеть заставка "ДеньМедика"! Также протестировав и последующие годы работает правильно.
За что Большое Спасибо участнику Sergey Sizov.
...
Рейтинг: 0 / 0
Определение даты
    #40077489
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмila

Предложение создать таблицу мне не подходит т.к. нужна 3 раза в году для появлении в программе заставки-поздравлении с Новым Годом, 8 Марта и днем Медработника в соответствующий диапазон дат.


Три конкретных праздника вообще не требует никаких расчетов. Забить массив на несколько лет вперед и все. Прямо в той функции, которая возвращает значение

С праздниками дело такое, что в любой момент любой праздник может быть перенесен/отменен. Поэтому "в общем случае" без ведения календаря праздников - не обойтись

Таблица-календарь упросить очень много запросов, где требуется анализ дат или диапазонов. Не только для 3 праздников. Наверняка, есть еще много разных задач подобного рода
...
Рейтинг: 0 / 0
Определение даты
    #40079389
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ

Забить массив на несколько лет вперед и все.


Несколько лет назад я так и сделала, но эти несколько лет прошли (((
и пришлось копаться в исходниках и вспоминать как и что.

Считаю, что совместно с Вами удалось всё сделать "На Века"
за что Всем Большое Спасибо!
...
Рейтинг: 0 / 0
Определение даты
    #40080238
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмila,

Отлично, что задача решена на века!

Но! В моей предыдущей конторе программно не получалось учесть праздники. Только табличкой.
...
Рейтинг: 0 / 0
Определение даты
    #40081630
Людмila
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-Shah, не беда!
Совсем недавно я тоже не умела, и Вот!
...
Рейтинг: 0 / 0
Определение даты
    #40082275
LUCIAN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Людмila,
Обобщая получается такая формула:
Код: vbnet
1.
2.
3.
4.
5.
god=2021 && ГОД
nM=6     && номер месяца
nDN=1    && номер дня недели т.е. 1-вс,2-пн,3-вт,4-ср,5-чт,6-пт,7-сб
nND=3	 && номер недели в месяце
?DATE(god,nM,01)-IIF(nDN < DOW(DATE(god,nM,01)),DOW(DATE(god,nM,01))-nDN,DOW(DATE(god,nM,01))+7-nDN)+nND*7
...
Рейтинг: 0 / 0
Определение даты
    #40083166
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Людмila,

Нет. Не учесть программно.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Определение даты
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]