@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 ;

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

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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽