:: Visual Foxpro, Foxpro for DOS
Узнать количество дней в определенном месяце(?)
Bobr
Автор

Сообщений: 1790
Откуда: Глухов
Дата регистрации: 21.11.2006
И последний на сегодня вопрос: есть ли в фоксе функция, которая по номеру месяца говорила бы сколько в этом месяце дней? Или свою писать придется? Если придется, то подскажите, как считать дни в феврале, в смысле, как узнать высокосный год или нет(ну, типа последняя цифра всегда делится на 4 или еще как...)?



Исправлено 1 раз(а). Последнее : Bobr, 16.10.08 18:05
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Какой же народ ленивый пошел....
********************
Function LastOfMonth
********************
&& последний день месяца
Lparameters D && Date
Return Gomonth(m.D-Day(m.D)+1,1)-1
И нафига понадобилась високосность?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/1 positive
Re: Узнать количество дней в определенном месяце(?)
Bobr
Автор

Сообщений: 1790
Откуда: Глухов
Дата регистрации: 21.11.2006
GOMONTH() вижу впервые... ну не знал я такой функции... и то, я ща не до конца понимаю, как оно работает:
в D, я так понимаю, должна лежать дата первого дня месяца? или нет? тоесть:
LastOFMonth({^01.10.2008})
Function LastOfMonth
********************
&& последний день месяца
Lparameters D && Date
Return Gomonth({^01.10.2008} - Day({^01.10.2008})+1, 1) - 1

вернет 31? жаль фокса дома на машине нет... ща попробую поставить, если получится - сегодня и разберусь...
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Bobr
GOMONTH() вижу впервые... ну не знал я такой функции...
Хелп надо почаще читать, очень, скажу я Вам, пользительное занятие.
Цитата:
и то, я ща не до конца понимаю, как оно работает:
в D, я так понимаю, должна лежать дата первого дня месяца? или нет?
Нет. Любая дата с нужным месяцем нужного года.
Цитата:
тоесть:
LastOFMonth({^01.10.2008})
Function LastOfMonth
********************
&& последний день месяца
Lparameters D && Date
Return Gomonth({^01.10.2008} - Day({^01.10.2008})+1, 1) - 1

вернет 31? жаль фокса дома на машине нет... ща попробую поставить, если получится - сегодня и разберусь...
Нет, не 31. С датой, еще раз говорю, надо работать правильно.
?LastOFMonth({^2008-10-15})
вернет
31.10.2008
то именно последний день месяца. Как его превратить в количество дней в месяце, надеюсь таки, сам сообразишь.


------------------
Лень - это неосознанная мудрость.




Исправлено 1 раз(а). Последнее : ssa, 16.10.08 19:29
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
Bobr
Автор

Сообщений: 1790
Откуда: Глухов
Дата регистрации: 21.11.2006
все. фокс поставил - все разобоалси! огромный сенькс за терпение и понимание!
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
_kot

Сообщений: 23
Дата регистрации: 30.01.2008
У меня тоже где то было...

RETURN GOMONTH(m.D,1)-DAY(GOMONTH(m.D,1))

Петрович
Ratings: 2 negative/1 positive
Re: Узнать количество дней в определенном месяце(?)
skuns

Сообщений: 46
Откуда: Москва
Дата регистрации: 04.06.2003
Может кому будет нужно
PARAMETERS lnMonthDelta
** Определение даты последнего дня предидущих или будущих месяцев
* Дельта помесячная, то есть на сколько месяцев назад или вперед от текущей даты нужно сместиться в вычислении
* Если нужно узнать дату в текущем месяце то = 0 (по умолчанию)
IF EMPTY(m.lnMonthDelta)
m.lnMonthDelta = 0
ENDIF
m.lnYear = YEAR(DATE()) && Текущий год
m.lnMonth = MONTH(DATE()) && Текущий месяц
m.lnDay = 1 && Всегда первое число месяца
* Проверяем смещение по годам
IF ABS(m.lnMonthDelta / 12) >= 1
m.lnYearMonth = INT(m.lnMonthDelta / 12)
IF m.lnMonthDelta < 0
m.lnMonthDelta = m.lnMonthDelta + (12*ABS(m.lnYearMonth))
ELSE
m.lnMonthDelta = m.lnMonthDelta - (12*ABS(m.lnYearMonth))
ENDIF
m.lnYear = m.lnYear + m.lnYearMonth
ENDIF
* Проверяем, смещения помесячно на предидущий год
m.lnYearMonth = m.lnMonth + m.lnMonthDelta
IF (m.lnYearMonth) <= 0
m.lnYear = m.lnYear - 1
m.lnMonth = 12 + m.lnYearMonth
ENDIF
* Проверяем, смещения помесячно на следующий год
IF (m.lnYearMonth) > 12
m.lnYear = m.lnYear + 1
m.lnMonth = m.lnYearMonth - 12
ENDIF
m.ldOldMonthMax = GOMONTH(DATE(m.lnYear,m.lnMonth,m.lnDay),1)-DAY(GOMONTH(DATE(m.lnYear,m.lnMonth,m.lnDay),1))
RETURN m.ldOldMonthMax


------------------
прняммммяямяям ...




Исправлено 6 раз(а). Последнее : skuns, 25.08.18 10:59
Ratings: 3 negative/1 positive
Re: Узнать количество дней в определенном месяце(?)
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Какой ужас...


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/2 positive
Re: Узнать количество дней в определенном месяце(?)
Аспид

Сообщений: 3475
Откуда: Москва
Дата регистрации: 01.04.2005
skuns
IF ABS(m.lnMonthDelta / 12) > 0
Улыбнуло)))
Это все шутка такая, наверное)


------------------
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
тож склоняюсь к версии о шутке юмору
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Просто эту функцию писали как минимум двое - первый ничего не знал о GOMONTH(), а второй добавил свои 5 копеек и написал 1 строку, где и использовал GOMONTH().
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
skuns

Сообщений: 46
Откуда: Москва
Дата регистрации: 04.06.2003
Аспид
IF ABS(m.lnMonthDelta / 12) > 0

Исправлено ...
IF ABS(m.lnMonthDelta / 12) > 1


------------------
прняммммяямяям ...
Ratings: 2 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
skuns

Сообщений: 46
Откуда: Москва
Дата регистрации: 04.06.2003
Аспид
IF ABS(m.lnMonthDelta / 12) > 0

Исправлено ...
IF ABS(m.lnMonthDelta / 12) => 1


------------------
прняммммяямяям ...
Ratings: 1 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
skuns

Сообщений: 46
Откуда: Москва
Дата регистрации: 04.06.2003
Аспид
IF ABS(m.lnMonthDelta / 12) > 0

Исправлено ...
IF ABS(m.lnMonthDelta / 12) => 1


------------------
прняммммяямяям ...
Ratings: 1 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
skuns

Сообщений: 46
Откуда: Москва
Дата регистрации: 04.06.2003
Ну можно и проще.

PARAMETERS lnMonthDelta
** Определение даты последнего дня предидущих или будущих месяцев
* Дельта помесячная, то есть на сколько месяцев назад или вперед от текущей даты нужно сместиться в вычислении
* Если нужно узнать дату в текущем месяце то = 0 (по умолчанию)
IF EMPTY(m.lnMonthDelta)
m.lnMonthDelta = 0
ENDIF
m.ldOldMonthMax = GOMONTH((DATE(YEAR(DATE()),MONTH(DATE()),31)),lnMonthDelta)
RETURN m.ldOldMonthMax


------------------
прняммммяямяям ...
Ratings: 2 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
skuns

Сообщений: 46
Откуда: Москва
Дата регистрации: 04.06.2003
Пример конечно не для тупого копирования...
При использовании пришлось бы подумать как следует.


------------------
прняммммяямяям ...
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
Taran

Сообщений: 13624
Откуда: Красноярск
Дата регистрации: 16.01.2008
skuns
Пример конечно не для тупого копирования...
При использовании пришлось бы подумать как следует.

А зачем его вообще приводить?
Вопрос решен 10 лет назад в одну строчку. Буквально первым ответом на вопрос.

А у тебя что? 31е число в каждом месяце бывает?
Постыдился бы.
Ratings: 0 negative/1 positive
Re: Узнать количество дней в определенном месяце(?)
Alsim

Сообщений: 3636
Откуда: Екатеринбург
Дата регистрации: 17.11.2004
skuns
Пример конечно не для тупого копирования...
Функция, в идеальном своём исполнении, тем и хороша, что её не надо понимать.
Как синус, например, или квадратный корень.
Послал значение - получил результат.



Исправлено 1 раз(а). Последнее : Alsim, 25.08.18 09:40
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
avatrox

Сообщений: 1221
Дата регистрации: 30.12.2014
skuns превосходит всех по развитию
Ratings: 0 negative/0 positive
Re: Узнать количество дней в определенном месяце(?)
avatrox

Сообщений: 1221
Дата регистрации: 30.12.2014
Отличный код, отличное всё
Лучший код в моей жизни
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 32 WbrErr  (Гостей: 31)

© 2000-2024 Fox Club 
Яндекс.Метрика