将我的 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"]);
在我的数据库中,我使用 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"]);