:: Visual Foxpro, Foxpro for DOS
дата на конец месяца
Sergeynizamov

Сообщений: 76
Дата регистрации: 21.09.2018
подскажите пожалуйста, что то сообразить не могу,
КАК ВЫВЕСТИ СИСТЕМНУЮ ДАТУ НА КОНЕЦ МЕСЯЦА
У МЕНЯ ЕСТЬ НА НАЧАЛО МЕСЯЦА ВОТ ПРИМЕР date()-day(date())+1
Ratings: 0 negative/0 positive
Re: дата на конец месяца
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
И при чем тут системность? Искать не пробовали?

Тут.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: дата на конец месяца
Sergeynizamov

Сообщений: 76
Дата регистрации: 21.09.2018
ведь фокс берет если date() - это же системная дата компьютера, мне вот и надо , что бы бралось из системной даты пользователя
Ratings: 0 negative/0 positive
Re: дата на конец месяца
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Sergeynizamov
ведь фокс берет если date() - это же системная дата компьютера, мне вот и надо , что бы бралось из системной даты пользователя
Там же Оффа целые функции писал по ссылке, что вам ssa дал.
Вот работающий в принципе вариант от Оффы Проверяйте, экспереминтируйте, читайте форум.

FUNCTION date_forum_isx && функция с форума. Вероятно возвращает ДАТУ последнего дня месяца DATE(). Можно указать (1N) - смещение в месяцах от DATE()
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


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 17.12.18 13:28
Ratings: 0 negative/0 positive
Re: дата на конец месяца
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
В огороде бузина, а в Киеве дядька... Вы считаете, что определение количества дней в произвольном месяце как-то сильно отличается от определения количества дней в месяце из "системной" даты и для этого должна быть какая-то особенная функция?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: дата на конец месяца
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Божья_коровка
Вот работающий в принципе вариант от Оффы
Лен, зачем учишь плохому? Там в первом же ответе функция из 1(одной) строки.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: дата на конец месяца
Sergeynizamov

Сообщений: 76
Дата регистрации: 21.09.2018
p1=Gomonth(date() - Day(date())+1, 1) - 1
вот он пример,
Спасибо за ссылку SSA
Ratings: 0 negative/0 positive
Re: дата на конец месяца
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
ssa
Божья_коровка
Вот работающий в принципе вариант от Оффы
Лен, зачем учишь плохому? Там в первом же ответе функция из 1(одной) строки.
Просто Оффа, так старался, жалко, столько кода потрачено, такие портянки писаны, а никому не нужно...

PS: Да и ТС уже всё просёк.

PPS: Не буду больше плохому учить :-[


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 17.12.18 13:46
Ratings: 0 negative/1 positive
Re: дата на конец месяца
of63

Сообщений: 25256
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
() Верно, никому не нужно, когда в фоксе есть встроенный календарь. Но вобще-то "усилия" были "потрачены" на самопальную реализацию GOMONTH (и инкремент даты), причем ТС в той портянке именно этим и занимался. Просто было интересно, насколько тяжеловесно реализовать календарь из подручных средств (суммирований и IF-ов)
Ratings: 0 negative/0 positive
Re: дата на конец месяца
shumik73

Сообщений: 515
Откуда: Алматы
Дата регистрации: 10.05.2006
&&Первый день текущего месяца
?DATE(YEAR(DATE()),MONTH(DATE()),1)

&&Последний день текущего месяца
?DATE(YEAR(DATE()),MONTH(DATE()),1)+40-DAY(DATE(YEAR(DATE()),MONTH(DATE()),1)+40)
Ratings: 0 negative/0 positive
Re: дата на конец месяца
katana

Сообщений: 20
Дата регистрации: 17.01.2011
&&Первый день текущего месяца
?DATE(YEAR(DATE()),MONTH(DATE()),1)

А так не проще ли -

?DATE()-DAY(DATE())+1

Не ерничаю, просто хотелось бы понять, такой вариант может быть хуже?
Всегда его использую, а вот мало ли...
Ratings: 0 negative/0 positive
Re: дата на конец месяца
Crispy
Автор

Сообщений: 18571
Дата регистрации: 16.05.2005
katana
Не ерничаю, просто хотелось бы понять, такой вариант может быть хуже?

Зачем же использовать какой хуже?
Не лучше ли - какой лучше. ;)
Т.е. тот, который здесь был приведен в первом же(!) ответе.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive


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

On-line: 24 (Гостей: 24)

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