Сравняване на две дати

  • Автор Автор dunix
  • Начална дата Начална дата

dunix

Registered
Здравейте,
Пробвам се да сравня две дате. Записвам ги в базата данни под timestamps и ги изкарвам чрез една функция:

PHP:
function dateFormat($date, $mod = 'full') {

	if ($mod == 'fDate') {
		$newDate = date('d-m-Yг.', $date);
	} elseif ($mod == 'fHours') {
		$newDate = date('G:iч.', $date);	
	} elseif ($mod == 'full') {
		$newDate = date('d-m-Yг. G:iч.', $date);
       } elseif ($mod == 'comparing') {
		$newDate = date('d-m-Y', $date);
	} else {
		$newDate = date('d-m-Yг. G:iч.', $date);
	}
	return $newDate;
	
}

Ползвам долната функция за сравняване и ако data1 е по-малка или равна да ми добавя още един class.

PHP:
$expire= dateFormat($row['dateQ'], 'comparing');
$today= dateFormat(time(), 'comparing');
$today= "";
if( $expire<= $today) { $class = "today"; }

Обаче когато датата в базада данни ми е 1496312547 ми добавя class="today", а не трябва, защото е чак след 1 месец.

Ако макна функция dateFormat се оправя, но аз искам да сравнявам само датата, без час, мин и сек.

Как мога да го оправя?

Оправих го по следния начин:
Добавих
PHP:
$today_time = strtotime($today);
$expire_time = strtotime($expire);
 
https://www.w3schools.com/php/php_date.asp

PHP:
if(date('d.m.Y', $row['dateQ']) == date('d.m.Y')){ echo "Днес"; }

:idea: :?:
 
Първо имаш число, после го правиш на стринг, после го правиш на число. Това е достаааааа объркано. Работи си с числата. Пробвай така:
Код:
$isToday = round(($row['dateQ'] - time()) / 86400) == 0;
$todayClass = $isToday ? 'today' : '';
 
Fakeheal каза:
Код:
$isToday = round(($row['dateQ'] - time()) / 86400) == 0;
$todayClass = $isToday ? 'today' : '';

Мисля, че това е най-правилното, което ми върши прекрасна работа.
Благодаря ти joTunkiq, но както каза и Fakeheal е неправилно решение да обръщам числата в стринг за да ги сравня.
Затова използвах функцията, която ми предостави тя. Но съм сигурен, че и кода, който ми предостави ти ще работи.
 

Back
Горе