将我的 SQL 时间戳更改为 php 中的 d-m-Y

changing my SQL Timestamp into a d-m-Y in php

在我的数据库中,我使用 CURRENT_TIMESTAMP 来跟踪新用户的注册日期。 现在我想生成一个在过去 7 天或 30 天内注册的用户列表。 我认为它会像本主题中所解释的那样简单; Get 30 days back date along with time

但是我当前的代码生成了意外的输出。

                for($i = 0; $i < $userlenght; $i++){
                    $comparedate = strtotime(date('Y-m-d', $user[$i]["date"]));
                    echo $comparedate . "<br/>";
                    if($user[$i]["date"] > $last){
                        //do stuff here with the users who match.
                    }
                }

这将 $comparedate 值显示为“-3600”,我不知道为什么。

谁能提供一些见解?

SQL 时间戳以字符串格式返回,因此您需要指示 PHP 将字符串读取为日期格式值。为此,您需要使用 strtotime().

尝试以下操作:

for($i = 0; $i < $userlenght; $i++){
       $comparedate = strtotime(date('Y-m-d', strtotime($user[$i]["date"])));
       echo $comparedate . "<br/>";
       if($user[$i]["date"] > $last){
             //do stuff here with the users who match.
       }
}

您的问题是 $user[$i]['date'] 是一个 MySQL 时间戳,看起来像 2018-09-14 11:09:10,并且不是 date 的有效输入。您可以删除对 date 的调用,您的代码应该可以正常工作:

$comparedate = strtotime($user[$i]["date"]);