62 / 29 / 5
Регистрация: 20.11.2009
Сообщений: 193
1

Как реализовать сложение дат (прибавить месяцы к дате) ?

24.12.2012, 22:17. Показов 20372. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Столкнулся с такой задачей - нужно к дате (в формате MySQL) прибавить несколько месяцев, и вывести эту дату в человекопонятном формате. Хотелось бы узнать как это сделать с минимумом преобразований. Немного покурил документацию по этому поводу, стало еще не понятнее.
Пока есть один вариант который работает - криво - через unix timestamp, преобразую месяцы в секунды и складываю с датой, но тут минус в приближенном вычислении, т.к. в месяцах разное количество дней.

P.S.
Что бы было понятнее что я хочу реализовать - есть дата покупки прибора, есть гарантийная дата в месяцах. Я хочу вычислить дату окончания этой самой гарантии.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2012, 22:17
Ответы с готовыми решениями:

Как прибавить к дате 1 день?
я не программист, но занимаюсь одним сайтом как администратор. Потребовалось прибавить к дате 1...

Как прибавить к дате несколько дней?
$CurrentDate = date("Y.m.d H:i:s"); $Days = ($withdraw_amo/300)*30;//вычисляем оплаченное...

Как прибавить кол-во дней к дате
Как использовать функцию Date_add не могу разобраться Вот что у меня <?php $Today = date('d...

Как прибавить три года к текущей дате
пишу что-то вроде этого date("Y-m-d",time()-(365*3*(24*60*60)));, но получается что-то не то....

8
работяга
368 / 368 / 52
Регистрация: 23.05.2010
Сообщений: 947
24.12.2012, 22:47 2
Не совсем понятно.
1) Если сегодня 24 декабря, а гарантия 3 месяца, то до какого числа считать? До 24 марта или прямо ровно 90 дней отсчитывать?
2) Гарантия в чём указывается - в количестве месяцев?
0
258 / 147 / 37
Регистрация: 24.01.2011
Сообщений: 427
25.12.2012, 06:52 3
PHP
1
2
date('Y-m-d', strtotime('25-12-2012 14:28 +3 month'));
date('Y-m-d', strtotime('25-12-2012 14:28 +90 day'));
2
62 / 29 / 5
Регистрация: 20.11.2009
Сообщений: 193
25.12.2012, 13:34  [ТС] 4
etalord, Гарантия в количестве месяцев, второй вопрос - до 24 марта считать, ибо гарантия в месяцах, а не в днях.

shafl, а будет ли работать с подстановкой?
PHP
1
2
$n = $data['warrnty']; //n=12
date('Y-m-d', strtotime('25-12-2012 14:28 +$n month'));
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.12.2012, 14:21 5
именно так - нет
Цитата Сообщение от hunty Посмотреть сообщение
PHP
1
strtotime('25-12-2012 14:28 +$n month')
а вот так
PHP
1
strtotime('25-12-2012 14:28 +' . $n . ' month')
или так
PHP
1
strtotime("25-12-2012 14:28 +{$n} month")
почему бы и нет..
1
258 / 147 / 37
Регистрация: 24.01.2011
Сообщений: 427
25.12.2012, 14:23 6
а будет ли работать с подстановкой?
будет
1
62 / 29 / 5
Регистрация: 20.11.2009
Сообщений: 193
25.12.2012, 21:09  [ТС] 7
Так вот еще загвоздка, можно ли передать через переменную стартовое время? У меня не заработало:

PHP
1
2
3
4
$start_date = $data['buydate']; //'2012-12-07'
$n = $data['warrnty']; //n=12
$result = date('Y-m-d', strtotime($start_date+'.$n.' month'));
//выдает 1970-01-01 03:32 AM
0
198 / 166 / 23
Регистрация: 20.04.2011
Сообщений: 750
Записей в блоге: 1
25.12.2012, 21:17 8
Цитата Сообщение от hunty Посмотреть сообщение
PHP
1
2
3
4
$start_date = $data['buydate']; //'2012-12-07'
$n = $data['warrnty']; //n=12
$result = date('Y-m-d', strtotime($start_date+'.$n.' month'));
//выдает 1970-01-01 03:32 AM
Так нет
А вот так да:
PHP
1
2
3
4
$start_date = $data['buydate']; //'2012-12-07'
$n = $data['warrnty']; //n=12
$result = date('Y-m-d', strtotime($start_date.'+'.$n.' month'));
//выдает 1970-01-01 03:32 AM
1
62 / 29 / 5
Регистрация: 20.11.2009
Сообщений: 193
25.12.2012, 22:00  [ТС] 9
А, спасибо, отлично работает! Главное не делать ошибок.
0
25.12.2012, 22:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2012, 22:00
Помогаю со студенческими работами здесь

Прибавить заданный интервал к дате
Доброго всем времени суток. В общем, наверное, сабж. Если так, то киньте ссылочки соответствующие,...

Как прибавить к дате период?
Привет всем! Подскажите как методом JavaScript прибавить к дате, например 5.10.2005 месяц? А...

Как прибавить к дате 7 дней
Всем привет. как прибавить к дате "очередного ТО и ПР" еще 7 дней, если она формируется как ...

Как прибавить 20 дней к дате
В новой ячейке должно прибавляться 20 дней к той дате которая находится в другой ячейки, подскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru