我正在使用Laravel。我刚碰到过 Carbon
哪个已经在供应商文件夹中。我做了一些快速搜索,发现它是PHP日期时间的一个很好的扩展。
在我的应用程序的某个地方,我需要一个逻辑来检查给定时间是否落在两个时间点之间。让我们说,我想检查10:00是否落在时间9:55和10:05之间。当然,它会下降,但我应该如何在Carbon的帮助下使用这种逻辑。
默认 Carbon::now()
将返回日期和时间 2014-12-02 14:37:18
格式。我在想是否只能提取时间部分,即 14:37:18
然后我可以比较两次,以了解测试时间是否属于两个时间点。
如果我直接检查两个Carbon对象,它也会尝试检查年份。但我所需要的只是时间部分。
事实上,我甚至不确定如果时间(h:m:s)可以直接通过碳进行比较。
是的,有一种方法可以在Carbon中执行此操作,只需查看文档即可 这里。
要确定当前实例是否在两个其他实例之间,您可以使用恰当命名的between()方法。第三个参数表示是否应该进行相等的比较。默认值为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将您的时髦表示转换为颈部表示,并像真人一样进行比较。
由于您只想比较小时数,因此您可以通过使用相对时间来解决此问题。
<?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