PHP - 比较日期,检查是否在上一小时内


PHP - Comparing date, checking if within last hour

我试图看看某个时间是否在最后一小时内。

$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并找出哪一个是正确的。 否则,您的代码在逻辑上看起来是正确的,尽管可能是不必要的复杂。