我试图看看某个时间是否在最后一小时内。
$unit_date = date($unit['last_accessed'], 'Y-m-d H:i:s');
$last_hour = date('Y-m-d H:i:s', strtotime('-1 hour'));
if($unit_date >= $last_hour ){
$connect = "<i class='fa fa-circle 2x' style='color:#2ECC71;'></i>";
} else {
$connect = '';
}
如您所见,我将$unit['last_accessed']放入正确的格式,然后与一小时前进行比较。如果时间在上一小时内$connect是一个字体很棒的圆圈(绿色),如果它不在上一小时内,它是空的,现在它说没有任何东西在最后一个小时内,这是错误的。
if(time() - strtotime($unit['last_accessed']) < 3601){
或
if(time() - strtotime($unit['last_accessed']) > 3599){
time() 和 strtotime() 都使用相同的时基(以秒
为单位)
如果 $unit['last_accessed'] 已经是一个整数时间变量,则不要使用 strtotime()。
日期时间解决方案
$firstDate = new 'DateTime('2019-10-16 07:00:00');
$secondDate = new 'DateTime('2019-10-17 07:00:00');
$diff = $firstDate->diff($secondDate);
$diffHours = $diff->h;
// diff in hours (don't worry about different years, it's taken into account)
$diffInHours = $diffHours + ($diff->days * 24);
// more than 1 hour diff
var_dump($diffInHours >= 1);
起源类似答案:在PHP中计算2个日期之间的小时数
首先,你以错误的方式使用日期函数。来自PHP的手册:
date ( string $format [, int $timestamp = time() ] )
必须提供$format字符串作为第一个参数,$timestamp作为第二个参数。您可以检查时间是否在最后一小时内,而无需将 Unix 时间戳转换为另一个时间戳字符串。
$last_hour = time() - 60*60; //last hour timestamp
if($unit['last_accessed'] >= $last_hour){
$connect = "<i class='fa fa-circle 2x' style='color:#2ECC71;'></i>";
}else{
$connect = '';
}
如您所见,我没有对时间戳进行任何转换,因为我没有在任何地方使用时间字符串。你应该更多地了解 unix 时间戳的操作或 php 时间函数。
引用:http://php.net/manual/en/function.date.php
你的代码中有错误。 在一个地方,你这样称呼date
:
日期(格式、时间)
在另一个地方,像这样:
日期(时间、格式)
检查 PHP 文档以了解date
并找出哪一个是正确的。 否则,您的代码在逻辑上看起来是正确的,尽管可能是不必要的复杂。