我使用PHP和Mysql处理一个项目,我需要计算年龄,但我需要删除小时,分钟和秒部分。这是一个例子:
出生日期2018-03-06 17:35:00但是 我需要2018-03-06 00:00:00
这是我的代码:
function FetchAgeCaduce($MaxDias=3){
$fechaInicial = time();//date("Y-m-d");
$fecha = date("d/m/Y",$FechaFinal);
$fechaInicial = strtotime("d/m/Y",$fecha);
for ($i=0; $i<$MaxDias; $i++)
{
$Segundos = $Segundos + 86400;
$caduca = time()+$Segundos;//date("D",time()+$Segundos);
$var = date("D",$caduca);
if ($var == "Sat")
{
$i--;
}
else if ($var == "Sun")
{
$i--;
}
else
{
$FechaFinal = time()+$Segundos;
}
}
return $FechaFinal;
}
我如何处理它以获得预期的结果?
答案 0 :(得分:1)
正确的方式/ MySQL方式:
将数据以DATE
存储在MySQL中,而不是DATETIME
。 DATE
本身被描述为here。它不会存储时间,因此您将始终将00:00:00
作为默认值。
不太正确的方式/ PHP方式:
Jay,Zeus,Freaking,K。Reist。学习使用DateTime
,停止使用date
!这就像这里的第二个问题,没有人学习DateTime
!
使用它!
$dt = new DateTime();
echo $dt->format("Y-m-d 00:00:00");
输出:
2018-03-06 00:00:00
P.S。第5行的$FechaFinal
未定义。
答案 1 :(得分:0)
您可以在应用程序或数据库层上格式化日期。
使用MySQL
您可以使用MySQL DATE_FORMAT Function 将日期解析为所需格式。
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00') dob;
使用PHP
假设您不想格式化数据库层中的日期,可能是因为您需要在其他一些计算中使用时间部分。使用date functions,如下图所示:
$dt = new DateTime();
echo $dt->format("Y-m-d 00:00:00");
//getting the expected date from the formatted string
$formateDate = DateTime::createFromFormat('Y-m-d H:i:s', $dt->format("Y-m-d 00:00:00"));