Реклама на сайте Advertise with us

PHP - формат даты к дням, неделям, месяцам от кол-ва дней?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

нет судьбы

С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204


Передовик Master-X (16.07.2011) Передовик Master-X (16.10.2011) Передовик Master-X (01.11.2011) Передовик Master-X (16.11.2011) Передовик Master-X (01.01.2012) Ветеран трепа Master-X (16.02.2012)
Ссылка на сообщениеДобавлено: 10/11/12 в 00:56       Ответить с цитатойцитата 

В скрипте
Код:
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');

Выводит, к примеру, в формате +2 days
Как я понял $interval - это экземпляр DateTime... и метод format умеет творить чудеса!

Что надо вписать в format, чтоб если кол-во дней <7, то писало, например "2 days" или "1 day".., если 7<days<30 - выдавало "1 week", "3 weeks" ..., если 30<days<365, то выводило "1 month", "11 month", ну и на том же самом приципе годы, на которых можно и остановиться?

®

0
 



С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032


Передовик Master-X (16.11.2012)
Ссылка на сообщениеДобавлено: 10/11/12 в 01:03       Ответить с цитатойцитата 

Это не волшебная палочка. Формат тот же, что у date(), никакой бызныс-логики

8
 

нет судьбы

С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204


Передовик Master-X (16.07.2011) Передовик Master-X (16.10.2011) Передовик Master-X (01.11.2011) Передовик Master-X (16.11.2011) Передовик Master-X (01.01.2012) Ветеран трепа Master-X (16.02.2012)
Ссылка на сообщениеДобавлено: 10/11/12 в 01:26       Ответить с цитатойцитата 

Тогда ищу функцию бизнес логики! icon_smile.gif
Что-то мне подсказывет с такой свалкой функций как в пхп, она просто обязана быть!

®

0
 



С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032


Передовик Master-X (16.11.2012)
Ссылка на сообщениеДобавлено: 10/11/12 в 01:50       Ответить с цитатойцитата 

Сначала попробуй объяснить интервалу, что такое ГОД trollface.png

8
 

нет судьбы

С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204


Передовик Master-X (16.07.2011) Передовик Master-X (16.10.2011) Передовик Master-X (01.11.2011) Передовик Master-X (16.11.2011) Передовик Master-X (01.01.2012) Ветеран трепа Master-X (16.02.2012)
Ссылка на сообщениеДобавлено: 10/11/12 в 22:13       Ответить с цитатойцитата 

Вот что у меня получилось:
Код:
function intervaltoday($datefrom) {
    $datetime1 = date_create($datefrom);
    $datetime2 = date_create(date('Y-m-d',time()));
    $interval = $datetime1->diff($datetime2);
    $difference = $interval->format('%a');
    if ($difference<30){
        return $interval->format('%a days ago');
    } elseif (($difference>=30)&&($difference<365)){
        return $interval->format('%m month ago');
    } else {
        return $interval->format('%y years ago');
    }
}

Кто поффессор в PHP укажите пожалуйста на излишки кода или "плохой тон"?

ПС. Не получилось вставить недели. Ибо не нашёл подходящий параметр для форматирования. Короче, format('%W weeks ago') не сработало в PHP 5.

®

0
 



С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032


Передовик Master-X (16.11.2012)
Ссылка на сообщениеДобавлено: 10/11/12 в 22:56       Ответить с цитатойцитата 

Ты неправильно подошёл к смыслу интервала. %a - это просто число, никакой привязки к датам. Если %a == 28, и это полный ферваль, %a тебе об этом не скажет.

Код:
function intervaltoday($datefrom) {
   $item = array('year','month','week','day');
   $datetime1 = date_create($datefrom);
   $datetime2 = date_create(date('Y-m-d',time()));
   $interval = $datetime1->diff($datetime2);
   $a = explode(':',$interval->format('%y:%m::%d'));
   if ($a[0]) $k = 0;
   elseif ($a[1]) $k = 1;
   elseif ($a[3]>=7) { $a[2] = floor($a[3]/7); $k = 2; }
   else $k = 3;
   return $a[$k].' '.$item[$k].($a[$k]>1?'s':'').' ago';
}


проФФесор. с одним "с" trollface.png

8
 

нет судьбы

С нами с 27.03.03
Сообщения: 4427
Рейтинг: 4204


Передовик Master-X (16.07.2011) Передовик Master-X (16.10.2011) Передовик Master-X (01.11.2011) Передовик Master-X (16.11.2011) Передовик Master-X (01.01.2012) Ветеран трепа Master-X (16.02.2012)
Ссылка на сообщениеДобавлено: 10/11/12 в 23:34       Ответить с цитатойцитата 

Я ошибся, я хотел написать - Проффэссор! icon_smile.gif

Ибо .($a[$k]>1?'s':''). smail54.gif

®

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »