首页 > 解决方案 > 仅提取日期的天数并与当前的天数进行比较

问题描述

我只需要提取用户注册日期的天数。

并仅提取当前日期的天数。

只需在 if 循环中,说如果用户注册的天数等于当前日期的天数,则执行此操作或执行此操作。

代码:

$manager = "Manager";
$managerPRO = "ManagerPRO";

$q = $connessione->prepare("
    SELECT * FROM collaboratori
    WHERE cat_professionisti = ?
    OR cat_professionisti = ?
     ");
$q->bind_param('ss', $manager,$managerPRO);
$q->execute();
$r = $q->get_result();

while($rr = mysqli_fetch_assoc($r)){

    /*REGISTRATION DATE*/
    $registrazione = $rr['data_registrazione'];
    $timestamp = strtotime($registrazione);
    echo date("d", $timestamp) .'=' ;

    /*CURRENT DATE*/
    $data_corrente = date('Y-m-d');
    $timestamp_uno = strtotime($data_corrente);
    echo date("d", $timestamp_uno);

    /*CONTROL*/
    if ($timestamp == $timestamp_uno){
        echo "yes".'<br>';
    }else{
        echo "no".'<br>';
    }
}

结果:

18=18no
17=18no
16=18no
16=18no

为什么在第一种情况下如果 18 = 18 给我错误?

但是,如果我将用户注册的日期更改为前 18 天,从 2020/11/18 更改为 2020/12/18,那么当前月份给了我是的!

无论月份如何,我都需要它,只需检查日期是否相同,告诉我是的,我错在哪里?

标签: phpdate

解决方案


您正在比较以秒为单位的时间戳。您正在做的是有效地比较两个不同的时间点,而不是一个月中的几天。

你真的应该使用DateTime. 如果你只想比较一天部分,那么你可以做这样的事情。

$dt1 = new DateTime($registrazione);
$dt2 = new DateTime(); // defaults to now

if($dt1->format('d') === $dt2->format('d')) {
    echo "Yes, it's the same day of the month";
} else {
    echo 'no!';
}

推荐阅读