как сравнить первый объект даты и времени с другим объектом даты и времени в переполнении стека

здесь я использую один объект даты и времени это

 $cdate  = date('d/m/Y h:i:sa')

и еще один объект даты и времени это

$udate = date("d/m/Y h:i:sa", strtotime("72 hours"));

для сравнения я использую это условие

 if($cdate >= $udate)

но проблема в этом … в этом случае это единственный сравниваемый только день, а не вся дата и время.

2

Решение

Строки, возвращенные из date() сопоставимы только в определенных обстоятельствах. Вы должны использовать DateTime() чьи объекты всегда сопоставимы:

$cdate  = new DateTime();
$udate = new DateTime('+3 days');
if($cdate >= $udate) {

}
4

Другие решения

if(strtotime($cdate) >= strtotime($udate)){
// your condition
}

Надеюсь, поможет 🙂

0

date() Функция возвращает строку, а не объект DateTime. Таким образом, >= сравнение вы делаете это строка сравнение, а не сравнение дат / времени.

Если вы действительно хотите провести сравнение строк, используйте формат, в котором такая сортировка будет иметь смысл, например, ISO 8601. Это можно сделать тривиально с форматом «c».

Однако гораздо лучше было бы сравнить фактические объекты DateTime или целочисленные метки (например, то, что вы получите от time()).

0

Ваш код неверен для сравнения дат, потому что дата возвращает строку.

Попробуй это:

$cdate = new DateTime();
$udate = new DateTime('72 hours');

if($udate > $cdate) {
echo 'something';
}
0

Вы не сравниваете время даты и нет объектов (как в OOP) в вашем коде. $cdate а также $udate являются строки, вот почему они сравниваются с использованием правил сравнения строк (то есть порядка словаря).

Вы можете использовать временные метки (которые представляют собой целые числа секунд):

// Use timestamps for comparison and storage
$ctime = time();
$utime = strtotime("72 hours");
// Format them to strings for display
$cdate = date('d/m/Y h:i:sa', $ctime);
$udate = date('d/m/Y h:i:sa', $utime);
// Compare timestamps
if ($ctime < $utime) {
// Display strings
echo("Date '$cdate' is before date '$udate'.\n");
}

Или вы можете использовать объекты типа DateTime:

$cdate = new DateTime('now');
$udate = new DateTime('72 hours');

// You can compare them directly
if ($cdate < $udate) {
// And you can ask them to format nicely for display
echo("Date '".$cdate->format('d/m/Y h:i:sa')."' is before date '".
$udate->format('d/m/Y h:i:sa')."'\n");
}
-1
По вопросам рекламы [email protected]