问题如下:
   要判断用户是否连续登陆,根据时间判断,现在的问题是,如何去判断时间,
   假如,用户首次登陆时间为:2010-7-10    下来登陆时间是:2010-7-11  这两个时间好判断,因为是同年同月月,所以直接去date('d',time());就可以了
   但是,当时间不是同月的时候,就不好判断了,,,如下:首次登陆为:2010-7-31  下次登陆为2010-8-1  使用上面的方法就没法判断了。
    还有不同年,却同月的情况,,,请问,,像这种情况该如何判断?    

解决方案 »

  1.   

    date("Y-m-d", $time)//年月日date("Y-m-d H:i:s", $time)//年月日小时分秒$time是个时间戳,省略了,默认是当前时间
      

  2.   

    $time=date('Y-m-d');判断$time存在几个 就是当天登陆过几次
      

  3.   

    date("Ymd", $time)//这个结果就是  8位整数,,两个想减,两次登陆,就是相差天数了
      

  4.   

    LZ的意思是想要对比两个日期大小来判断是否连续?按如下例子做就可以了:$date1=time();
    $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函数输出日期的格式。
      

  5.   

    只用 unix 时间戳比较就可以了,精确到秒
      

  6.   

    amani11 提供的 方法,在本月内适合,但是两个月份不相同的情况下,相见结果不正确,
    假如是:2010-9-30    2010-10-1   这个时间应该是相差一天。
    还有就是跨年问题,假如是2010-12-31  2011-1-1
    请问这个如何解决?谢谢啦
      

  7.   


    $start=  strtotime('2010-12-31');
    $end= strtotime('2011-1-1');
    echo ($end-$start) / (3600 * 24) ;
      

  8.   

    不知道你用何种格式保存登录时间
    如果是 2010-12-31 这种格式,请先用 strtotime 函数将其转换为 unix 时间戳
    其实只要保存 time 函数的返回值就可以了一般的 
    $t = $t2 - $t1; //就是两时间相差的秒数
    $t / 86400 就是相差的天数
      

  9.   


    呵呵,是我错了,,,,ceil((strtotime("年月日A") - strtotime("年月日B"))/86400)
      

  10.   

    将两个时间转换为 unix 时间戳之后,分别除以86400(一天的秒数),再相减,就OK啦
      

  11.   

    嗯嗯 那用Unix时间戳最方便了
      

  12.   

    呵呵
    谢谢兄弟们回复。。不过你们的代码都不适合我的需求。。但是非常感谢你们回复
    最后写好的代码如下:/*
     * 参数:
     * $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);
    }