Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вывод даты окончания действия услуги

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
android
Отправлено: 25 Января, 2012 - 18:21:22
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




Привет, вообщем нужно сделать функцию.

Допустим человек заказывает услугу. Есть select меню с выбором срока действия услуги 1 месяц 2 месяца и тд...

Вот мне нужна функция в которую вводишь и месяц и текущую дату, мне выводит число когда блокировать услугу.

Так же на заметку:

если дата: 29.12.2012 то меняется на 29.01.2013

На выходе дата формата 00.00.0000
 
 Top
armancho7777777 Супермодератор
Отправлено: 25 Января, 2012 - 18:45:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




PHP:
скопировать код в буфер обмена
  1.  
  2. function date_result($dat){
  3.  
  4.   $m = date('m', strtotime($dat));
  5.   $d = date('d', strtotime($dat));
  6.   $y = date('Y', strtotime($dat));
  7.  
  8.   return date('d-m-Y', mktime(0,0,0, $m, $d, $y) + date('t') * 24 * 60 * 60);
  9.  
  10. }
  11.  
  12. echo date_result('29.12.2012');
  13.  

(Отредактировано автором: 25 Января, 2012 - 19:20:37)

 
 Top
android
Отправлено: 25 Января, 2012 - 19:07:46
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




armancho7777777 где указывать кол-во месяцев?
 
 Top
armancho7777777 Супермодератор
Отправлено: 25 Января, 2012 - 19:10:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




На данный момент функция выдаёт 1 месяц.
Сей час дорабатываю, чтобы можно было вторым параметром указывать количество месяцев.
Функция принимает любой формат))
Т.е. можно так:
PHP:
скопировать код в буфер обмена
  1. echo date_result('29/12/2012');
  2. // Так
  3. echo date_result('2012/09/29');
  4. // ... и т.д.
  5.  

(Отредактировано автором: 25 Января, 2012 - 19:11:40)

 
 Top
android
Отправлено: 25 Января, 2012 - 19:29:38
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




armancho7777777 жду =)
 
 Top
armancho7777777 Супермодератор
Отправлено: 25 Января, 2012 - 20:34:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Функция:
PHP:
скопировать код в буфер обмена
  1.  
  2. function date_result($dat = '', $count_mont = null){
  3.  
  4.   if(empty($dat)){
  5.      $dat = date('Y-m-d');  
  6.   }else{
  7.      $dat = preg_replace("/([^0-9]+)/i", "-", $dat);
  8.   }
  9.  
  10.   $m = date('n', strtotime($dat));
  11.   $d = date('j', strtotime($dat));
  12.   $y = date('Y', strtotime($dat));
  13.  
  14.   if($count_mont === null){
  15.      $count_mont = 1;
  16.   }
  17.          
  18.    for($i = 1, $j = $m, $y2 = $y; $i <= $count_mont; $i++, $j++){
  19.          
  20.           if ($j > 12) { $j = 1; $y2++; }
  21.          
  22.           $count_dey += date('t', mktime(0,0,0, $j, $d, $y2));
  23.  
  24.    }
  25.    
  26.    return date('d-m-Y', mktime(0,0,0, $m, $d, $y) + $count_dey * 24 * 60 * 60);
  27.  
  28. }
  29.  


Функция принимает форматы дат как с лева на права, так и с права на лево:
хххх.хх.хх
хххх/xx/xx
xx.xx.xxxx
xx/xx/xxxx

с любыми не числовыми разделителями (хоть запятые через пробел: хх , хх , хххх),
а так же без ведущих нулей, если хотите (х.х.хххх) Радость

Примеры:

PHP:
скопировать код в буфер обмена
  1.  
  2. // Один месяц от текущей даты
  3. echo date_result();
  4.  
  5. // Один месяц от указанной даты
  6. echo date_result('2012.01.24');
  7.  
  8. // 16 месяцев от текущей даты
  9. echo date_result('', 16);
  10.  
  11. // 5 месяцев от указанной даты
  12. echo date_result('24/01/2012', 5);
  13.  


Функция возвращает дату в формате: хххх-хх-хх
Для преобразования в нужный формат делаем так:
PHP:
скопировать код в буфер обмена
  1. echo date('d.m.Y', strtotime(date_result('24-01-2012', 5))); // хх.хх.хххх


.

(Отредактировано автором: 25 Января, 2012 - 22:40:45)

 
 Top
android
Отправлено: 25 Января, 2012 - 22:00:27
Post Id


Посетитель


Покинул форум
Сообщений всего: 335
Дата рег-ции: Сент. 2011  


Помог: 0 раз(а)




armancho7777777большое спасибо, завтра проверю.

return date('d-m-Y', mktime(0,0,0, $m, $d, $y) + $count_dey * 24 * 60 * 60);

не проще тут? =)
 
 Top
armancho7777777 Супермодератор
Отправлено: 25 Января, 2012 - 22:06:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




android пишет:
return date('d-m-Y', mktime(0,0,0, $m, $d, $y) + $count_dey * 24 * 60 * 60);
не проще тут? =)

Можете и в самой функции конечно исправить...
Но думаю, что будет лучше, если функция будет возвращать дату в стандартном для БД формате Подмигивание

(Отредактировано автором: 25 Января, 2012 - 22:47:37)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB