我想用当前日期减去从mysql数据库检索到的日期,并得到以天数为单位的输出。请帮我。
我试过这个代码。但它不起作用。我正在从表中检索日期,并试图从我没有得到的当前日期中减去它。
<?php
mysql_connect("localhost","root","");
mysql_select_db("lib_db");
if(isset($_POST['submit']))
{
$user1=$_POST['user'];
$curdate=date("d/m/Y");
$query=mysql_query("select * from returnbooks where Userid='$user1'");
while($row=mysql_fetch_array($query))
{
$getnow=$row[5];
$change=strtotime($getnow);
$mydate=date('d/m/Y',$change);
$diff= abs(strtotime($mydate) - strtotime($curdate));
echo floor($diff/(60*60*24));
}
}
?>
</p>
<p> </p>
<form id="form1" name="form1" method="post" action="">
<label for="user"></label>
<input type="text" name="user" id="user" />
<p>
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
</p>
</body>
</html>
一个比自己做算术更好的解决方案是使用内置函数来做这件事。您可以在MySQL查询(SELECT DATEDIFF(MyDateColumn, CURDATE()) FROM MYTABLE
)中正确执行此操作,也可以在从MySQL获取日期并从中构建DateTime对象后使用PHP函数。($dateInterval = date_diff($dateFromSQL, new DateTime()); $daysApart = $dateInterval->days;
)
这将有所帮助:
$date1 = 2015-02-25;
$date2 = 2015-02-28;
$number_days = (strtotime($date2) - strtotime($date1)) / (60 * 60 * 24);
echo $number_days;
您可以在$date2变量中使用当前日期。
另一种选择是扩展DateTime并利用它为您带来优势。这是一个这样做的例子。摘自PHP.net 上的DateTime类页面
<?php
class DT extends DateTime
{
public function getDiff($new = 'NOW')
{
if(!($new instanceOf DateTime))
$new = new DateTime($new);
return parent::diff($new);
}
public function get($format, $new = 'NOW')
{
return $this->getDiff($new)->format($format);
}
}
$dt = new DT('2015-02-26 20:20:20');
$days = $dt->get('%a');
echo $days . ' day' . (($days == 0 || $days > 1) ? 's' : '') . ' ago';