问题如下:
要判断用户是否连续登陆,根据时间判断,现在的问题是,如何去判断时间,
假如,用户首次登陆时间为:2010-7-10 下来登陆时间是:2010-7-11 这两个时间好判断,因为是同年同月月,所以直接去date('d',time());就可以了
但是,当时间不是同月的时候,就不好判断了,,,如下:首次登陆为:2010-7-31 下次登陆为2010-8-1 使用上面的方法就没法判断了。
还有不同年,却同月的情况,,,请问,,像这种情况该如何判断?
要判断用户是否连续登陆,根据时间判断,现在的问题是,如何去判断时间,
假如,用户首次登陆时间为:2010-7-10 下来登陆时间是:2010-7-11 这两个时间好判断,因为是同年同月月,所以直接去date('d',time());就可以了
但是,当时间不是同月的时候,就不好判断了,,,如下:首次登陆为:2010-7-31 下次登陆为2010-8-1 使用上面的方法就没法判断了。
还有不同年,却同月的情况,,,请问,,像这种情况该如何判断?
$date2="2009-12-31";
if(date("Y-m-d",date1)>date("Y-m-d",strtotime($date2))){
print "date1>date2";
}
else{
print "date1<=date2";
} strtotime函数的作用是把字符串转换成日期格式,"Y-m-d"是date函数输出日期的格式。
假如是:2010-9-30 2010-10-1 这个时间应该是相差一天。
还有就是跨年问题,假如是2010-12-31 2011-1-1
请问这个如何解决?谢谢啦
$start= strtotime('2010-12-31');
$end= strtotime('2011-1-1');
echo ($end-$start) / (3600 * 24) ;
如果是 2010-12-31 这种格式,请先用 strtotime 函数将其转换为 unix 时间戳
其实只要保存 time 函数的返回值就可以了一般的
$t = $t2 - $t1; //就是两时间相差的秒数
$t / 86400 就是相差的天数
呵呵,是我错了,,,,ceil((strtotime("年月日A") - strtotime("年月日B"))/86400)
谢谢兄弟们回复。。不过你们的代码都不适合我的需求。。但是非常感谢你们回复
最后写好的代码如下:/*
* 参数:
* $d1------最新时间
* $d2------以前的时间
* 返回值:
* 1-----连续登陆。时间相差1天。
* 2-----没有连续登陆,时间相差最少2天以上
* 3-----天数相同。
* 0-----参数传递错误。
*/
function Day_Diff($d1,$d2)
{
$d2_array=explode('-', $d2);
$d1_array=explode('-', $d1); $d1_Y=$d1_array[0];
$d1_M=$d1_array[1];
$d1_D=$d1_array[2]; $d2_Y=$d2_array[0];
$d2_M=$d2_array[1];
$d2_D=$d2_array[2]; if($d1_Y-$d2_Y==1)
{
if($d2_M<$d1_M)
{
return 2;
}
else if($d2_M>=$d1_M)
{
if(($d1_M+12)-$d2_M==1)
{
$temp=gettheday($d2);
$temp=explode('-', $temp[1]);
$temp=$temp[2]; //得到该月的最后一天
$temp=($temp-$d2_D)+$d1_D; //用最后一天减去当前时间的天数加上新时间的天数
if($temp==1)
{
return 1;
}
else
{
return 2;
}
}
else
{
return 2;
}
}
else
{
return 0;
}
}
else if($d2_Y==$d1_Y)
{
if($d2_M<$d1_M)
{
$temp = strtotime("-1 month", $d1);
$temp=date("t", $temp);
$temp=($temp-$d2_D)+$d1_D;
if($temp==1)
{
return 1;
}
else
{
return 2;
}
}
else if($d2_M==$d1_M)
{
if($d1_D-$d2_D==1)
{
return 1;
}
else if($d1_D-$d2_D==0)
{
return 3;
}
else
{
return 2;
}
}
else
{
return 0;
}
}
else
{
return 2;
}
}/*
*参数:
* $date--------获取一个月的第一天和最后一天。
* 返回值:
* Array类型,第一个是月第一天,第二个是月最后一天。
*/
function gettheday($date)
{
$firstday = date("Y-m-01",strtotime($date));
$lastday = date("Y-m-d",strtotime("$firstday +1 month -1 day"));
return array($firstday,$lastday);
}