#php #datetime #time #php-carbon
Вопрос:
Я хочу проверить, есть ли текущее время между 8 утра и 8 вечера. До сих пор я пытался
$startTime = CarbonCarbon::createFromFormat('H:i a', '08:00 AM')->toString();
$endTime = CarbonCarbon::createFromFormat('H:i a', '08:00 PM')->toString();
$currentTime = CarbonCarbon::now();
if($currentTime->greaterThan($startTime) amp;amp; $currentTime->lessThan($endTime)){
dd('In Between');
}else{
dd('In Not Between');
}
Но из-за того, что у даты углерода есть тип даты, а у другого времени есть тип строки, я не могу их сравнивать.
Какая-нибудь помощь?
Комментарии:
1. удалите ->toString()?
2. но сейчас у меня нет времени. Сейчас 00:00:00. Тогда как узнать сегодняшнюю дату и изменить время на 8 утра
3. @Псих, я виноват! Я установил время начала на 12 утра, так что все работает
4. отлично, не за что
Ответ №1:
$now = Carbon::now();
$start = Carbon::createFromFormat('H:i a', '08:00 AM');
$end = Carbon::createFromFormat('H:i a', '08:00 PM');
if ($now->isBetween($start, $end) {
// between 8:00 AM and 8:00 PM
} else {
// not between 8:00 AM and 8:00 PM
}
Чтобы определить, находится ли текущий экземпляр между двумя другими экземплярами, вы можете использовать метод с подходящим именем between () (или псевдоним isBetween ()). Третий параметр указывает, следует ли проводить сравнение, равное. Значение по умолчанию равно true, которое определяет, находится ли оно между границами или равно им.