powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP+MSQL] Прибавление месяца к текущей дате
45 сообщений из 45, показаны все 2 страниц
[PHP+MSQL] Прибавление месяца к текущей дате
    #38354637
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем! Помогите решить задачу, вот нашлась такая функция

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
$date = date("Y-m-d H:i:s");

function add_month_to_date($date, $m){	
	if (is_numeric($m)){
		while ($m>0){
			$date += cal_days_in_month(CAL_GREGORIAN, strftime("%m",$date), strftime("%G",$date))*24*60*60;		
			$m--;
		}		
	}
	return $date;
}



Функция типа считает количество дней в каждом конкретном месяце и прибавляет.

Но когда я делаю так
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
$date = date("Y-m-d H:i:s");

function add_month_to_date($date, $m){	
	if (is_numeric($m)){
		while ($m>0){
			$date += cal_days_in_month(CAL_GREGORIAN, strftime("%m",$date), strftime("%G",$date))*24*60*60;		
			$m--;
		}		
	}
	return $date;
}
mysqlQuery("UPDATE `table1` 
                         SET
                         `date_start` = '$date',
                         `date_end` = '".add_month_to_date($date) ."'
                         WHERE id........... и т.д.");



то вставляется просто текущая дата. Что я делаю не так?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38354658
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.php.net/manual/en/datetime.add.php
авторDateTime::add -- date_add — Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38354732
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrow http://www.php.net/manual/en/datetime.add.php
авторDateTime::add -- date_add — Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object

Вот это интересно, а как это применить, можно пожалуйста пример?
Мне важно что бы было так, если сегодня 31 января + месяц = получится 28 февраля.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38354906
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маша иScareCrow http://www.php.net/manual/en/datetime.add.php
пропущено...


Вот это интересно, а как это применить, можно пожалуйста пример?
Мне важно что бы было так, если сегодня 31 января + месяц = получится 28 февраля.

Это неправильно (хотя не знаю, надо понять зачем). Итак, а зачем это?
просто 28 января + 1 месяц = 28 февраля. 29,30,31 января + месяц тоже равно 28 февраля. То есть тут логика нечёткая.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38354984
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограмёрМаша ипропущено...


Вот это интересно, а как это применить, можно пожалуйста пример?
Мне важно что бы было так, если сегодня 31 января + месяц = получится 28 февраля.

Это неправильно (хотя не знаю, надо понять зачем). Итак, а зачем это?
просто 28 января + 1 месяц = 28 февраля. 29,30,31 января + месяц тоже равно 28 февраля. То есть тут логика нечёткая.
Именно так, что же тут поделаешь :)

Тут такая замануха :) вот например гарантия на "чайник" один месяц, куплен - 31 января.
Значит заканчивается ровно через календарный месяц ровно 28 февраля. По григорианскому календарю в феврале 28 дней (в високосном году — 29 дней). Соответственно если в высокосном году тогда 29 дней.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355064
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маша и,

Хм )) Тоже нашёл ту же функцию что и Вы. Вообщем... а там надо указывать количество месяцев для добавления... А Вы не указали (вторым параметром). то есть надо add_month_to_date($date, 1)
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355163
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограмёрМаша и,

Хм )) Тоже нашёл ту же функцию что и Вы. Вообщем... а там надо указывать количество месяцев для добавления... А Вы не указали (вторым параметром). то есть надо add_month_to_date($date, 1)

add_month_to_date($date, 1) - Добавило 0000-00-00 00:00:00

Что же делать?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355266
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маша иПрограмёрМаша и,

Хм )) Тоже нашёл ту же функцию что и Вы. Вообщем... а там надо указывать количество месяцев для добавления... А Вы не указали (вторым параметром). то есть надо add_month_to_date($date, 1)

add_month_to_date($date, 1) - Добавило 0000-00-00 00:00:00

Что же делать?

у меня вообще функции cal_days_in_month не находит почему-то. но могу сказать, что $date должно быть не строкой даты, а timestamp'ом. то есть надо первую строку приведённого кода заменить на $date = time() и всё должно заработать (если данная функция вообще рабочая).
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355274
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автору меня вообще функции cal_days_in_month не находит почему-то.
интересно почему?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355282
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавтору меня вообще функции cal_days_in_month не находит почему-то.
интересно почему?

Знал бы, рассказал )). А вообще я не локально у себя на компе пробую... Я на разных онлайн интерпретаторах запускаю (так быстрее). Так что фиг знает, может у них там что...

кстати да... Попробовал на другом и всё запустилось. рабочий пример вот:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$date = time();

function add_month_to_date($date, $m){	
	if (is_numeric($m)){
		while ($m>0){
			$date += cal_days_in_month(CAL_GREGORIAN, strftime("%m",$date), strftime("%G",$date))*24*60*60;		
			$m--;
		}		
	}
	return $date;
}

echo date("Y-m-d H:i:s", add_month_to_date($date, 1));
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355297
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗнал бы, рассказал )).

авторInstallation ¶

To get these functions to work, you have to compile PHP with --enable-calendar .


The Windows version of PHP has built-in support for this extension.


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?php

   error_reporting(-1);
$date = time();

function add_month_to_date($date, $m){
if (is_numeric($m)){
while ($m>0){
$date += cal_days_in_month(CAL_GREGORIAN, strftime("%m",$date), strftime("%G",$date))*24*60*60;
$m--;
}
}
return $date;
}

echo date("Y-m-d H:i:s", add_month_to_date($date, 1));



авторWarning: cal_days_in_month(): invalid date. in C:\xampp\htdocs\peretz\www\index.php on line 9
2013-08-05 13:24:41
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355317
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторЗнал бы, рассказал )).

авторInstallation ¶

To get these functions to work, you have to compile PHP with --enable-calendar .


The Windows version of PHP has built-in support for this extension.


Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?php

   error_reporting(-1);
$date = time();

function add_month_to_date($date, $m){
if (is_numeric($m)){
while ($m>0){
$date += cal_days_in_month(CAL_GREGORIAN, strftime("%m",$date), strftime("%G",$date))*24*60*60;
$m--;
}
}
return $date;
}

echo date("Y-m-d H:i:s", add_month_to_date($date, 1));



авторWarning: cal_days_in_month(): invalid date. in C:\xampp\htdocs\peretz\www\index.php on line 9
2013-08-05 13:24:41

хм... не функция, а хрень какая-то :) тут работает: http://writecodeonline.com/php/
Может лучше другую написать?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355337
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортут работает: http://writecodeonline.com/php/

авторWarning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. on line 8

Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. on line 8

Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. on line 15
2013-09-05 11:42:19
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355370
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавтортут работает: http://writecodeonline.com/php/

авторWarning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. on line 8

Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. on line 8

Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. on line 15
2013-09-05 11:42:19

?! )) На сервере часовой пояс не выставлен, если в php.ini его выставить (или вызвать set_default_timezone), то варнингов не будет. А так, если посмотреть на результат, то он правильный (за исключением нескольких часов, как-раз из-за часового пояса).
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355377
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

эм... ошибся... эту функцию date_default_timezone_set, а не set_default_timezone
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355378
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА так, если посмотреть на результат, то он правильный (за исключением нескольких часов
слово "жжошь" меня просили не говорить, но других у меня просто нет.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355389
14664576
вообще непонял?!
Код: php
1.
strftime("%Y",$date)


это раз...
14663392 - как прибавленные январские 31! день помогут ТС? - это два?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355391
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторА так, если посмотреть на результат, то он правильный (за исключением нескольких часов
слово "жжошь" меня просили не говорить, но других у меня просто нет.
правильно, не надо говорить. Вы лучше объясните что Вам кажется смешным. Сами понимаете "смех без причины ....". То есть давайте, если с чего-то смеётесь, то объясняйте почему.

Я например смешного не вижу ничего. В пределах одного часового пояса (UTC) всё работает правильно. И если я выставлю часовой пояс на сервере как у себя, или у себя выставлю UTC, то и для моей системы код не будет сбиваться в несколько часов.

Так что рассказывайте, чего смеётесь, иначе Ваше сообщение можно считать чистой воды троллингом.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355425
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

А на SQL-сервере в дату не добавить месяц, типа dateadd, если MS SQL?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355436
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот работающий вариант:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $d = mktime($h, $i, $s, $m+$months, $d, $y);
  if (date("m", $d)+12*(date("Y", $d))!=$y*12+$m+$months){
    $d = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $d;
}

echo date("Y-m-d", add_months(strtotime("2013-01-31"), 1));



ShSerge, в случае с 31 января там, думаю, будет точно такая же ситуация (31 января + 1 месяц = 3 марта), а автору надо иначе, потому лучше эту логику на стороне php оставить. На входе и на выходе timestamp.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355461
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёрвот работающий вариант:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $d = mktime($h, $i, $s, $m+$months, $d, $y);
  if (date("m", $d)+12*(date("Y", $d))!=$y*12+$m+$months){
    $d = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $d;
}

echo date("Y-m-d", add_months(strtotime("2013-01-31"), 1));






адЪ и израиль.

Код: php
1.
echo date('r', strtotime('last day of next month', $the_date));
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355466
Alex Choo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что мешает проверить?

select dateadd(mm, 1, '2013-01-31 00:00:00.000')

2013-02-28 00:00:00.000
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355468
авторвот работающий вариант:
гыгыгы...
интэресно! а до 31 МАРТА вообще гарантия предусматривается... !?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355472
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
<?php
$d = new DateTime( '2010-01-08' );
$d->modify( 'last day of next month' );
echo $d->format( 'l jS \of F Y h:i:s A' ), "\n";
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355477
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowПрограмёрвот работающий вариант:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $d = mktime($h, $i, $s, $m+$months, $d, $y);
  if (date("m", $d)+12*(date("Y", $d))!=$y*12+$m+$months){
    $d = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $d;
}

echo date("Y-m-d", add_months(strtotime("2013-01-31"), 1));






адЪ и израиль.

Код: php
1.
echo date('r', strtotime('last day of next month', $the_date));



Это точно :) Как насчёт рабочего варианта... а то в данном контексте
$d = mktime($h, $i, $s, $m+$months+1, 0, $y);
лучше чем
$d = date('r', strtotime('last day of next month', $the_date))

Скажу больше... второй вариант просто бессмыслен в данной функции :)
Пишем код, а потом объясняем "мой код лучше, потому что ...". Иначе какой смысл того, что Вы пишите? Просто что бы сказать "нет, не так - можно лучше, но как - не знаю"?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355489
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex ChooА что мешает проверить?

select dateadd(mm, 1, '2013-01-31 00:00:00.000')

2013-02-28 00:00:00.000

Ну если работает как надо - тогда гууд :) А проверить не могу, у меня ms sql нету )) Да и вообще у меня линукс, и как обычно ms продукты на него не стают как надо (если и стают вообще).
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355498
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...авторвот работающий вариант:
гыгыгы...
интэресно! а до 31 МАРТА вообще гарантия предусматривается... !?

В варианте, нужном автору - нет )) Логика: купил 5-ого числа, значит и гарантия до 5-ого числа. купил в январе, значит гарантия действует до того же числа в феврале или до последнего дня месяца, если в нём данной даты нету и т.д.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355503
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёркак-то так...пропущено...

гыгыгы...
интэресно! а до 31 МАРТА вообще гарантия предусматривается... !?

В варианте, нужном автору - нет )) Логика: купил 5-ого числа, значит и гарантия до 5-ого числа. купил в январе, значит гарантия действует до того же числа в феврале или до последнего дня месяца, если в нём данной даты нету и т.д.

кстати, если у ТС гарантия на товары будет не только на месяц, но и (на некоторые) на 2 или 3 месяца - то гарантия до 31 марта будет возможна.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355513
авторВ варианте, нужном автору - нет )) Логика: купил 5-ого числа, значит и гарантия до 5-ого числа. купил в январе, значит гарантия действует до того же числа в феврале или до последнего дня месяца, если в нём данной даты нету и т.д.
а ты и есть ТС? просто, ты аппелируешь условиями задачи под своё решение - смущён...
я купил 28 февраля - почему бы гарантии не быть до 31 марта?

пысы может поинтересуемся у ТС что за задачу перед ней поставили, а потом бросимся её решать?! ;)
авторкстати, если у ТС гарантия на товары будет не только на месяц, но и (на некоторые) на 2 или 3 месяца - то гарантия до 31 марта будет возможна.
см. пысы
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355544
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так...авторВ варианте, нужном автору - нет )) Логика: купил 5-ого числа, значит и гарантия до 5-ого числа. купил в январе, значит гарантия действует до того же числа в феврале или до последнего дня месяца, если в нём данной даты нету и т.д.
а ты и есть ТС? просто, ты аппелируешь условиями задачи под своё решение - смущён...
я купил 28 февраля - почему бы гарантии не быть до 31 марта?

пысы может поинтересуемся у ТС что за задачу перед ней поставили, а потом бросимся её решать?! ;)
авторкстати, если у ТС гарантия на товары будет не только на месяц, но и (на некоторые) на 2 или 3 месяца - то гарантия до 31 марта будет возможна.
см. пысы

Если я не прав, то ТС меня поправит. Ладно, дождёмся ответа ТС, что бы не было сомнений
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355572
авторЕсли я не прав, то ТС меня поправит. Ладно, дождёмся ответа ТС, что бы не было сомнений
сомнений в чём? прав - не прав?!
я купил 28 февраля - почему бы гарантии не быть до 31 марта?
ответь пожалуйста!
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355613
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как-то так...авторЕсли я не прав, то ТС меня поправит. Ладно, дождёмся ответа ТС, что бы не было сомнений
сомнений в чём? прав - не прав?!
я купил 28 февраля - почему бы гарантии не быть до 31 марта?
ответь пожалуйста!

А кстати да, как это можно исправить?

вот это хорошо работает
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $d = mktime($h, $i, $s, $m+$months, $d, $y);
  if (date("m", $d)+12*(date("Y", $d))!=$y*12+$m+$months){
    $d = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $d;
}

echo date("Y-m-d", add_months(strtotime("2013-01-31"), 1));



,но желательно что бы так, если 28.02.2013, то если прибавить месяц, должно быть 31 марта. А не 28 марта.
Желательно что бы календарный месяц прибавлялся, это вообще реально сделать?
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355621
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЖелательно что бы календарный месяц прибавлялся, это вообще реально сделать?
прибавлять секунды надо.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355634
авторэто вообще реально сделать?
реально сделать многое...
если у тебя последний день месяца, то полученная дата, должна быть последним днём месяца
если разница между двумя датами больше 2! месяцев, то полученная дата должна быть последним днём месяца
полагаю, реализовать несложно! (даже самостоятельно ;)))

одно непонятно, почему с конца января, гарантия будет всего 28-29 дней, а в июле\августе 31!!!
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355636
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпочему с конца января, гарантия будет всего 28-29 дней,
все вопросы к Октавиану Августу и далее по списку.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355655
авторвсе вопросы к Октавиану Августу и далее по списку.
да как-то я сомневаюсь - больше к продавцу\изготовителю\законодателю...
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355669
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю что, февраль просто коротенький месяц и не более того.
Помогите как это сделать, модифицировать вот это код.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $d = mktime($h, $i, $s, $m+$months, $d, $y);
  if (date("m", $d)+12*(date("Y", $d))!=$y*12+$m+$months){
    $d = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $d;
}

echo date("Y-m-d", add_months(strtotime("2013-01-31"), 1));
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355789
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маша иДумаю что, февраль просто коротенький месяц и не более того.
Помогите как это сделать, модифицировать вот это код.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $d = mktime($h, $i, $s, $m+$months, $d, $y);
  if (date("m", $d)+12*(date("Y", $d))!=$y*12+$m+$months){
    $d = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $d;
}

echo date("Y-m-d", add_months(strtotime("2013-01-31"), 1));



Я то помогу конечно... Но ответьте на вопрос, какой интервал между 28 февраля и 28 марта? и ещё один вопрос: какой интервал между 28 февраля и 31 марта? У меня в голове проскакивают на первый вопрос ответ месяц, а на второй месяц и 3 дня :)
Вы уверены, что данная модификация будет верной и такая система гарантий не породит проблем с покупателями, которые как минимум не будут будут считать что система гарантий непрозрачная, а вообще могут считать что их надувают :). Как Вы объясните ситуацию, когда два друга-клиента обсуждают Ваш магазин, и проявляется, что один не смог сдать товар по гарантии через 28 дней (1-ого марта, по чисто человеческой логике меньше месяца), а второй хвастается, что ему поменяли товар через месяц и 3 дня?

изменение:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $date = mktime($h, $i, $s, $m+$months, $d, $y);
  if ((date("m", $date)+12*(date("Y", $date))!=$y*12+$m+$months) || (date("m", mktime($h, $i, $s, $m, $d+1, $y))!=$m)){
    $date = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $date;
}

echo date("Y-m-d", add_months(strtotime("2013-02-27"), 1));
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355798
qwerty4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WHERE `date` = NOW() + INTERVAL 1 WEEK
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355801
qwerty4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
qwerty4321,

не WEEK, а MONTH
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355824
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограмёрМаша иДумаю что, февраль просто коротенький месяц и не более того.
Помогите как это сделать, модифицировать вот это код.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $d = mktime($h, $i, $s, $m+$months, $d, $y);
  if (date("m", $d)+12*(date("Y", $d))!=$y*12+$m+$months){
    $d = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $d;
}

echo date("Y-m-d", add_months(strtotime("2013-01-31"), 1));



Я то помогу конечно... Но ответьте на вопрос, какой интервал между 28 февраля и 28 марта? и ещё один вопрос: какой интервал между 28 февраля и 31 марта? У меня в голове проскакивают на первый вопрос ответ месяц, а на второй месяц и 3 дня :)
Вы уверены, что данная модификация будет верной и такая система гарантий не породит проблем с покупателями, которые как минимум не будут будут считать что система гарантий непрозрачная, а вообще могут считать что их надувают :). Как Вы объясните ситуацию, когда два друга-клиента обсуждают Ваш магазин, и проявляется, что один не смог сдать товар по гарантии через 28 дней (1-ого марта, по чисто человеческой логике меньше месяца), а второй хвастается, что ему поменяли товар через месяц и 3 дня?

изменение:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function add_months($ts, $months){
  list($y, $m, $d, $h, $i, $s)=explode(':', date("Y:m:d:H:i:s", $ts));
  $date = mktime($h, $i, $s, $m+$months, $d, $y);
  if ((date("m", $date)+12*(date("Y", $date))!=$y*12+$m+$months) || (date("m", mktime($h, $i, $s, $m, $d+1, $y))!=$m)){
    $date = mktime($h, $i, $s, $m+$months+1, 0, $y);
  }
  return $date;
}

echo date("Y-m-d", add_months(strtotime("2013-02-27"), 1));



Да, я тоже так думаю, в первом месяц, а во втором плюс три дня.

А можно сделать так, если купил 31 в любом месяце года, тогда всегда + 1 день, то есть переводим на день вперед.
А если купил в январе 29,30 то к февралю + 3 дня, = 1 и 2 марта соответственно.

"какой интервал между 28 февраля и 28 марта?" - я думаю что пусть так и будет, ни кто же не виноват что в феврале 28 дней.

Помогите пожалуйста как это сделать :)
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355830
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Маша и,

ой, и там не дописано если 31 января то +3 к февралю = 3 марта.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355904
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Маша иМаша и,

ой, и там не дописано если 31 января то +3 к февралю = 3 марта.

простите, не понял что надо сделать... с самого начала можно? ) а то я где-то мысль потерял..
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355905
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, ладно... всёровно спать уже пора... Если я Вас правильно понял, то Вам в такой формулировке подойдёт обычная
Код: php
1.
$new_date = strtotime("+1 month", $date);


где $date и $new_date - это timestamp'ы.
...
Рейтинг: 0 / 0
[PHP+MSQL] Прибавление месяца к текущей дате
    #38355911
Маша и
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПрограмёрМаша иМаша и,

ой, и там не дописано если 31 января то +3 к февралю = 3 марта.

простите, не понял что надо сделать... с самого начала можно? ) а то я где-то мысль потерял..

Если купил 31 числа в любом месяце года, тогда всегда + 1 день, то есть прибавляем день.
Все кто купил 31 гарантия до 1 следующего месяца, а если 30 числа то до 30 следующего месяца.
А если купил в январе 29, 30, 31 то к февралю + 3 дня, = 1, 2, 3 марта соответственно.

Суть такая что когда чел. покупает, он запоминает условную дату.
Например, чел. купил хостинг 9 числа, и он знает что, до 9 числа каждого месяца ему нужно заплатить.

Всё это для того, что если покупка происходит в
"неудобные даты - январе 29, 30, 31" то мы их немного подвигаем, приводим к "удобным".


"какой интервал между 28 февраля и 28 марта?" - я думаю что пусть так и будет, ни кто же не виноват что в феврале 28 дней.
...
Рейтинг: 0 / 0
45 сообщений из 45, показаны все 2 страниц
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP+MSQL] Прибавление месяца к текущей дате
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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