Задать вопрос
@ortsuev33

Есть ли недочеты в коде?

Есть ли не до четы в моем коде, суть кода в том что я сравниваю две даты и пишу если обе даты сегодня то , сегодня если вчера , то вчера в остальных случаях просто день месяц и год(ну это я позже сделаю а так про сегодня вчера мне главное знать там то я просто выведу дату), все ли я учел?
static function dateConvert($date){

 

	$current_date=new DateTime();
  $cur_date= getdate($current_date->getTimestamp());
$prev_date= getdate($date);
$difday=$cur_date['yday']-$prev_date['yday'];
$difyear=$cur_date['year']-$prev_date['year'];
 if($cur_date['year']==$prev_date['year'] and $cur_date['mon']==$prev_date['mon'] and $cur_date['yday']==$prev_date['yday']){
		  	return 'Сегодня';
 }elseif ($cur_date['year']==$prev_date['year'] and $cur_date['mon']==$prev_date['mon'] and $difday==1) {
		  	return 'Вчера';
}elseif ($cur_date['year']==$prev_date['year'] and   $difday==1) {
		  	return 'Вчера месяц был другой';
 }elseif (  $difyear==1 and $cur_date['mon']==1 and $prev_date['yday']==364 or $prev_date['yday']==365  ) {
		  	return 'Вчера год был другой';
		  }
return ;

	}
  • Вопрос задан
  • 114 просмотров
Подписаться Простой 1 комментарий
Решения вопроса 2
sergiks
@sergiks Куратор тега PHP
♬♬
Код плохо отформатирован и его трудно читать.
Логика не вполне удачна. Лучше использовать разницу между двух дат DateTime::diff() или date_diff() – из двух дат получите объект с числом дней, месяцев, лет между ними. Только сбросьте на 0 время у обеих дат, чтобы работать только с датами. Такой вариант пригодится для более сложного случая, когда вы захотите ещё "Два дня назад", "Послезавтра" и "через неделю"
Ответ написан
@remzalp
Программер чего попало на чем попало
Есть всего 3 значимых исхода:
разница в днях = 0 - сегодня
разница в днях = 1 - вчера
разница в днях > 1 - писать дату.
Зачем какие-то монстроидальные строки писать?

Дальше - работаем с Unixtimestamp?
Разница в датах: (int) ($date2 - $date1) / 86400
без всяких лишних преобразований
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы