关于PHP计算时间差的问题,救命!

来源:百度知道 编辑:UC知道 时间:2024/05/22 15:36:03
在写一个签到系统,每天只能签到一次!!!计算时间差一直写不成功,各位大哥,帮我看看代码哪出问题了。
<?php
mysql_select_db($db_website);
$ClientDate=date('Y-m-d H:i:s',time()); //得到当前时间
$query = mysql_query("SELECT * FROM `points` where `char_id`='".$_SESSION['uesr_id']."';");
$Points_Data = mysql_fetch_array($query);
$Lasttime = $Points_Data['date'];
//截取当前时间
$nowdate=mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y"));
//截取上次领取时间
$lastdate=mktime(date("H",strtotime($Lasttime)),date("i",strtotime($Lasttime)),date("s",strtotime($Lasttime)),date("m",strtotime($Lasttime)),date("d",strtotime($Lasttime)),date("Y",strtotime($Lasttime)));
//取出天数差
$days=round(($lastdate-$nowdate)) ;
if ($days<1) {
$sql= "update `points` set `points` = `points` + '1',date =

为什么要这么复杂的计算,不就是获取上次时间到现在的天数吗,SQL就可以直接得到。

TO_DAYS函数计算这个日期从0000年1月1日开始的天数,TO_DAYS(now())-TO_DAYS(数据库日期字段)就可以得到那个日期至今的天数。

这样就可以了:
$query = mysql_query("SELECT *,TO_DAYS(NOW())-TO_DAYS(`DATE`) AS DAYS FROM `points` where `char_id`='".$_SESSION['uesr_id']."';");
$Points_Data = mysql_fetch_array($query);
$days = $Points_Data['DAYS'];

另外,你的数据库字段名字叫做DATE很不好。