php - 仅提取日期的天数并与当前的天数进行比较
问题描述
我只需要提取用户注册日期的天数。
并仅提取当前日期的天数。
只需在 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,那么当前月份给了我是的!
无论月份如何,我都需要它,只需检查日期是否相同,告诉我是的,我错在哪里?
解决方案
您正在比较以秒为单位的时间戳。您正在做的是有效地比较两个不同的时间点,而不是一个月中的几天。
你真的应该使用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!';
}