[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Прибавить к дате период
Мальтиец
Привет.
Хотят для курса обучения вводить не дату начала и окончания , а дату начала и продолжительность.
Т.е. начало 08.09.20, продолжительность 3.5 месяца.
Как бы вы считали дату окончания?
Со смартфона пишу, пока не погуглил может из коробки есть функция для этого, самому высчитывать выглядит как неокей
walerus
3,5 месяца на сколько я понимаю, нельзя прибавить к "текущей дате", можно прибавить количество дней

Вычислить кол-во дней в нужных месяцах сложить их
$number = cal_days_in_month(CAL_GREGORIAN, 8, 2020); // 31
echo "Всего {$number} дней в Августе 2020 года";

ну и прибавить к дате
$date = new DateTime(time());
$date->modify('+'.$tmp_days.' day');


ps: может кто лучше способ подскажет )
Valick
walerus, мысли глобальнее. Не все вопросы в разделе РНР надо решать на уровне РНР.
Всё это гораздо удобнее и правильнее сделать на уровне БД.


_____________
Стимулятор ~yoomoney - 41001303250491
Мальтиец
В принципе для моей задачи можно и через базу, там тип date. Вот такое соорудил:
SELECT `date_start`, date_add(date_add(`date_start`, INTERVAL 2 MONTH), INTERVAL 14 DAY) as `date_end` FROM `mytable` 
Valick
Мальтиец, на самом деле лучше отказаться от месяцев и оперировать исключительно днями, как и говорил walerus. В данных вопросах лучше стремиться к унификации.
К примеру когда делаешь заказ на Алиэкспрес, то защита заказа составляет 60 или 90 дней, но не 2 или 3 месяца (это жжжж не спроста)

_____________
Стимулятор ~yoomoney - 41001303250491
Мальтиец
Цитата (Valick @ 9.09.2020 - 16:01)
Мальтиец, на самом деле лучше отказаться от месяцев и оперировать исключительно днями,

Это не я задаю.
Курс обучения у них составляет например 3.5 месяца.
Вот так им и удобно вводить в админке.
А переводить эти месяцы самому на количество дней не очень хочется, тут надо и откуда стартуют учитывать и что за месяцы.
walerus
Valick, ну блиин... Про базу у ТС ни слова не сказано ), яж хз, может он в файл вообще будет писать периоды biggrin.gif , так зачем подключать БД тогда...

Да и на счет "дорого/богато" тоже спорный вопрос в данном "моменте", я бы писал в БД(раз уж она используется), timestamp_start и timestamp_end, ничего лишнего.

Да можно и сразу на фронте все рассчитать с тем же Jq/Js и в форме отправлять уже "нужные отметки", это наверное даже будет лучше. Хотя, мы же не знаем какие(как) данные будут приходить на бекэнд.
Valick
Цитата (walerus @ 9.09.2020 - 16:19)
Valick, ну блиин... Про базу у ТС ни слова не сказано

тыжпрограммист
Цитата (walerus @ 9.09.2020 - 16:19)
я бы писал в БД(раз уж она используется), timestamp_start и timestamp_end, ничего лишнего

Цитата (Мальтиец @ 8.09.2020 - 18:18)
Хотят для курса обучения вводить не дату начала и окончания , а дату начала и продолжительность


это жжжж не спроста wink.gif

_____________
Стимулятор ~yoomoney - 41001303250491
sergeiss
Цитата (Мальтиец @ 8.09.2020 - 19:18)
Т.е. начало 08.09.20, продолжительность 3.5 месяца.

А вот эту функцию https://www.php.net/manual/ru/datetime.add.php отменили, что ли?

Там в Примере 2 как раз очень похожая ситуация показана.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
walerus
sergeiss, да ситуация похожая, но... ТСу как и ранее писалось, придется рассчитывать количество дней в выбранном периоде, т.к. в месяце не всегда 30 дней.


Valick
Цитата
это жжжж не спроста wink.gif

Та ну то понятно )), я может не корректно написал что имел ввиду. Имелось ввиду что пользователь выбирает дату "старта"(можно календарик притулить JQ) и период продолжительности (какое нибудь dropdown menu)... а по итогу отправлять точки времени старта и окончания периода или точки старта и продолжительность "в милисеках"...
killer8080
Цитата (Мальтиец @ 9.09.2020 - 15:51)
Это не я задаю.
Курс обучения у них составляет например 3.5 месяца.
Вот так им и удобно вводить в админке.
А переводить эти месяцы самому на количество дней не очень хочется, тут надо и откуда стартуют учитывать и что за месяцы.

странные у тебя заказчики)) Курс обучения обычно измеряется в часах, должен составлятся график обучения. Переводить месяцы тупо в дни тоже не правильно, нужно учитывать длительность месяца и выходные/праздничные дни. тебе следует уточнить задачу.
sergeiss
Цитата (walerus @ 10.09.2020 - 12:11)
ТСу как и ранее писалось, придется рассчитывать количество дней в выбранном периоде, т.к. в месяце не всегда 30 дней.

Не обязательно, кстати. Если уж считать "в лоб", то всё можно сделать "красиво". Просто сначала разбираем на части дату, записываем в отдельные переменные год, месяц, число. Увеличиваем месяц на единицу (также проверяем переход на следующий год). Создаем новую переменную типа "дата". И к ней прибавляем еще 15 дней. Тут не будем мелочиться насчет количества дней в месяце smile.gif Я надеюсь, что 1 день "рояля не играет".

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Мальтиец
Ну вообще у них отмечаются по каким дням недели занятия.
Т.е. по сути месяц они наверное как 4 недели считают.
Так что умножу на 28 и получу сколько дней прибавить.
FatCat
http://www.ecigtalk.ru/forum/f21/t15782.html#post904774

_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.