Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
|
Грачи прилетели пишет:PHP Version 5.6.30
вроде через new DateTime должно получаться сравнение, но как только перевел всё через strtotime , получилось, а с примерами выше нет. Не знаю в чём дело, ошибок не выводит.
Меня устраивает вариант сравнения через strtotime.
Спасибо!
Добрый день!
DateTime это объект поэтому сравнение так не работает и выходит на фатальную ошибку.
Нужно добавить $date_start->getTimestamp() и.т.д.
Несколько вариантов с DateTime для определения $date_start и $date_stop
Дата стоп - всегда следующий день 09:30
Время у Дата старт 18:30 Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
<?PHP //My test for variant 1 & variant 2 in PHP 7.3 //Variant 1 available from PHP 5.2 ----------------------------- $date_start = new DateTime('18:30'); $time_start=$date_start->getTimestamp(); echo "date_start: ",$date_start->format('Y-m-d H:i'),"<br>"; $date_start->modify('+15 hour'); $time_end=$date_start->getTimestamp(); echo "date_end: ",$date_start->format('Y-m-d H:i'),"<br>"; echo "date_start: ",date('Y-m-d H:i',$time_start)," date_end: ", date('Y-m-d H:i',$time_end); //Variant 2 available from PHP 5.3 ---------------------------- echo "<hr>"; $date_start = new DateTime('18:30'); $time_start=$date_start->getTimestamp(); echo "date_start: ",$date_start->format('Y-m-d H:i'),"<br>"; $date_start->add(new DateInterval('PT15H')); $time_end=$date_start->getTimestamp(); echo "date_end: ",$date_start->format('Y-m-d H:i'),"<br>"; echo "date_start: ",date('Y-m-d H:i',$time_start)," date_end: ", date('Y-m-d H:i',$time_end); echo "<hr>"; //--------------------------------------------------- $now=new DateTime("19:30"); // for test only: new DateTime("19:30") replace to: new DateTime() $time_now=$now->getTimestamp(); echo "сейчас ",date('Y-m-d H:i',$time_now),"<br>"; if( $time_now > $time_start && $time_now < $time_end) { echo " дата: ",date('Y-m-d H:i',$time_now)," меду двух дат ",date('Y-m-d H:i',$time_start)," "," и ",date('Y-m-d H:i',$time_end); } else { echo "дата: ",date('Y-m-d H:i',$time_now)," не подошла!"; } //--------------------------------------------------- ?> /* date_start: 2019-03-15 18:30 date_end: 2019-03-16 09:30 date_start: 2019-03-15 18:30 date_end: 2019-03-16 09:30 -------------------------------------------------- date_start: 2019-03-15 18:30 date_end: 2019-03-16 09:30 date_start: 2019-03-15 18:30 date_end: 2019-03-16 09:30 -------------------------------------------------- сейчас 2019-03-15 19:30 дата: 2019-03-15 19:30 меду двух дат 2019-03-15 18:30 и 2019-03-16 09:30 */
Несколько вариантов c strtotime Спойлер (Отобразить)PHP:
скопировать код в буфер обмена
<?PHP $date_start=strtotime("+18 hour +30 minutes",$time0); echo "<br>".date("Y-m-d H:i",$date_start); echo "<br>".date("Y-m-d H:i",$date_start); echo "<hr>"; $date_stop=strtotime("+15 hour",$date_start); echo "<br>".date("Y-m-d H:i",$date_stop); $date_stop=strtotime("+1 day +9 hour +30 minutes",$time0); echo "<br>".date("Y-m-d H:i",$date_stop); /* 2019-03-14 18:30 2019-03-14 18:30 -------------------- 2019-03-15 09:30 2019-03-15 09:30 */ ?>
Удачи!(Отредактировано автором: 15 Марта, 2019 - 09:10:17)
|