如何使用DateTime类检查五分钟内是否包含两个unix时间戳

问题描述 投票:0回答:1

如何使用 DateTime 类在 PHP 中检查 2 个 unix 时间戳是否在 5 分钟范围内?

我指的是五分钟时钟,而不是(5*60 秒)。查看系统时钟,一分钟过去了。

例如,它可以是从 04:59 到 05:04 的范围。

在这种情况下,如果时间戳是指 04:59 和 05:04 例如,它应该是正确的。

我在不同的日期和时间上遇到了很多麻烦,否则简单的减法就足够了。

function checker($timestamp1, $timestamp2){
    $date1 = new DateTime();
    $date2 = new DateTime();
    $date1->setTimestamp($timestamp1);
    $date2->setTimestamp($timestamp2);
    $a_date = $date1->format('d m Y');
    $b_date = $date2->format('d m Y');

    // I'm lost exactly here
    // WHAT CODE I HAVE TO WRITE FROM HERE ON?!?!

    if ($a_date != $b_date) { return 0; } //WRONG CODE FOR "14 10 2024 00:00:10" AND "13 10 2024 23:59:00" 
    $a_hour = $date1->format('H');
    $b_hour = $date2->format('H');
    if (abs($a_hour - $b_hour) > 2) { return 0; }
    $a = $date1->getTimestamp();
    $b = $date2->getTimestamp();
    if (abs($a - $b) <= 5*60 ) { return 1; } else { return 0; }
}

注意对于我正在做的事情,该函数使用

DateTime
类非常重要。

编辑

在与 @C3roe 进行评论并使用 https://www.php.net/manual/en/datetime.diff.php 后,减去间隔,我很难继续前进。

function checker($timestamp1, $timestamp2){
    $date1 = new DateTime();
    $date2 = new DateTime();
    $date1->setTimestamp($timestamp1);
    $date2->setTimestamp($timestamp2);
    $interval = $date1->diff($date2);
    // ALSO HERE I DON'T KNOW WHAT TO DO
    echo 'RESULT: '.$interval->format('%d.%m.%Y %H %i'); 
}
php datetime
1个回答
0
投票

如果它们是unix时间戳,我不明白为什么你要设置它们然后让它们进行比较。只是从一开始就比较它们吗?

function checker($timestamp1, $timestamp2){
    if (abs($timestamp1 - $timestamp2) <= 5*60 ) { return 1; } else { return 0; }
}
© www.soinside.com 2019 - 2024. All rights reserved.