Я использую Laravel. Я только что встретил Carbon
который уже был в папке продавцов. Я сделал быстрый поиск и обнаружил, что это отличное расширение от PHP Date time.
Где-то в моем приложении мне нужна была логика, которая будет проверять, падает ли заданное время между двумя точками времени. Допустим, я хочу проверить, падает ли 10:00 под временем 9:55 и 10:05. Конечно, это падает, но как я должен использовать эту логику с помощью Carbon.
По умолчанию Carbon::now()
вернет дату и время в формате 2014-12-02 14:37:18
. Я думал, могу ли я извлечь часть времени только то, что 14:37:18
тогда я могу сравнить два раза, чтобы узнать, попадает ли время под тестирование под два момента времени или нет.
Если я непосредственно проверю два объекта Carbon, он попытается также проверить год. Но мне нужна только часть времени.
И, на самом деле, я даже не уверен, что время (h: m: s) можно напрямую сравнить с углеродом.
Да, есть способ сделать это в Carbon, так как просто взгляните на документацию здесь .
Чтобы определить, находится ли текущий экземпляр между двумя другими экземплярами, вы можете использовать метод aptly named между (). Третий параметр указывает, должно ли быть выполнено сравнение. Значение по умолчанию – true, которое определяет, находится ли оно между или равным границам.
$first = Carbon::create(2012, 9, 5, 1); $second = Carbon::create(2012, 9, 5, 5); var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second)); // bool(true) var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second)); // bool(true) var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second, false)); // bool(false)
Время UNIX проще для такого рода задач.
Таким образом, вы можете использовать strtotime, чтобы преобразовать представление hipster в представление neckbeard и сравнить, как настоящий мужчина. Поскольку вы хотите сравнить часы, вы можете взломать это, используя относительное время.
<?php $now = time(); $startTime = strtotime( "12:10:24", $now ); $endTime = strtotime( "14:24:45", $now ); $point = strtotime("12:25:40", $now ); if( $point >= $startTime && $point <= $endTime ) { echo "Inside\n"; } else { echo "Outside\n"; } ?>
Вывод:
$ php test.php 2> /dev/null Inside