Показать сообщение отдельно
  #14 (permalink)  
Старый 08.11.2017, 15:13
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от laimas
Более того, корректно все таки работать с датой/временем, а не с датой уже потому, что проверка на больше ли одна дата другой не имеет смысла - не может текущая дата быть меньше даты дня рождения, в противном случае это человек, который только родится в будущем, но уже живой.
Вы путаете смысл, который закладывается в "день рождения".
Когда говорят фразу "я приду на твой др" вы же не думаете, что пользователь сконструирует машину времени и вернется в прошлое. Поэтому в контексте этой задачи дата bd обязана быть в будущем времени.

Если я не приведу bd к будущему времени, то узнаю не сколько осталось до bd, а сколько прошло времени с этого дня.

Код ниже находит возраст пользователя, каким образом из этого состояния можно получить кол-во дней до будущего др я не могу, пока что, сообразить.
<?php
	$bd='11.12.1994';
	$bd=new DateTime($bd);
	$now=new DateTime();
	
	$Interval=$now->diff($bd);
	$months=$Interval->format('%m');
	$days=$Interval->format('%d');
	
	echo 'Осталось ',
	    $months>0?$months.' '.plural($months,array('месяц','месяца','месяцев')).' ':null,
	    $days>0?$days.' '.plural($days,array('день','дня','дней')):null;
	
	
	
	
    //© https://gist.github.com/fomigo/2382775
    function plural($n,$forms){
        return $n%10==1&&$n%100!=11?$forms[0]:($n%10>=2&&$n%10<=4&&($n%100<10||$n%100>=20)?$forms[1]:$forms[2]);
    }
Ответить с цитированием