如何制作PHP时间课程

时间:2013-04-16 13:45:29

标签: php

我想创建一个PHP类,它可以从数据库中收集信息并检查该特定操作的执行时间,因为它应该能够告诉我该操作是在10分钟前或2天前执行的,或者3年前,我做了一个PHP课程,但有时它返回负片时间,我检查并交叉检查它似乎没有任何错误,请我需要帮助

<?php
class ClassTimeFormat{
    protected $dateTime;

    public function __construct($dateTime){
        $this->dateTime =   $dateTime;
    }

    public function getYears(){
         $sql=  " SELECT YEAR('$this->dateTime') as year";
         $result    =   mysql_query($sql) or die(mysql_error());
         $row   =   mysql_fetch_assoc($result) or die(mysql_error());
         return $row['year'];
    }

    public function getDayofMonth(){
        $sql    =   "SELECT DAY('$this->dateTime') as day";
        $result =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['day'];
    }

    public function getDayofWeek(){
        $sql    =   "SELECT DAYNAME('$this->dateTime') as dayofweek";
        $result =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['dayofweek'];
    }



    public function getMonthName(){
        $sql    =   "SELECT MONTHNAME('$this->dateTime') as monthname";
        $result =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['monthname'];
    }

    public function getMonth(){
        $sql    =   "SELECT MONTH('$this->dateTime') as month";
        $result =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['month'];
    }

    //TIme methods
    public function getSecs(){
        $sql=   " SELECT SECOND('$this->dateTime') as seconds";
        $result =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['seconds'];
    }

    public function getMins(){
        $sql=   " SELECT MINUTE('$this->dateTime') as minutes";
        $result =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['minutes'];
    }

    public function getHour(){
         $sql=  " SELECT HOUR('$this->dateTime') as hours";
         $result    =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['hours'];

    }
    public function getSecsDiff(){
        $sql=   " SELECT EXTRACT(SECOND FROM NOW())- EXTRACT(SECOND FROM '$this->dateTime') as seconds;";
        $result =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['seconds'];
    }

    public function getMinsDiff(){
        $sql=   " SELECT EXTRACT(MINUTE FROM NOW())- EXTRACT(MINUTE FROM '$this->dateTime') as minutes;";
        $result =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['minutes'];
    }

    public function getHourDiff(){
         $sql=  " SELECT EXTRACT(HOUR FROM NOW()) - EXTRACT(HOUR FROM '$this->dateTime') as hours;";
         $result    =   mysql_query($sql) or die(mysql_error());
        $row    =   mysql_fetch_assoc($result);
        return $row['hours'];

    }


    public function getExactTime(){
        if(date('Y') > $this->getYears()){
            return (date('Y') - $this->getYears())." Years ago";
        }
        else{
            if($this->getMonth() != date('n')){
                return (date('n') - $this->getMonth())." Months ago";   
            }
            else{
                if($this->getDayofMonth() != date('j')){
                    return (date('j') - $this->getDayofMonth())." Days ago";
                }
                else{
                    if($this->getHour() != date('G')){
                        return (date('j') - $this->getHour())." Hours ago";
                    }
                    else{
                        if($this->getMins() != date('i')){
                            return (date('i') - $this->getMins())." Minutes ago";
                        }
                        else{
                            if($this->getSecs() != date('s')){
                                return (date('s') - $this->getSecs())." Seconds ago";
                            }
                            else{
                                return "Just now";
                            }
                        }
                    }
                }
            }

        }
    }
}

&GT;

1 个答案:

答案 0 :(得分:1)

不需要上课。如果你的时间是负数,你可能已经错误地减去了时间。

在这段代码中,$ intTime只来自time()

function makeNiceTime($intTime)
{
     $curTime = time();
     $strTime = '';
     if ( ($curTime-$intTime) <  (60)) //(24*60*60))
     {
        $strTime = sprintf("%d seconds ago", $curTime-$intTime);
     }
     else if ( ($curTime-$intTime) <  (60*60)) //(24*60*60))
     {
        $strTime = sprintf("%d minutes ago", ($curTime-$intTime) / 60 );
     }
     else if ( ($curTime-$intTime) <  (60*60*24)) //(24*60*60))
     {
        $strTime = sprintf("%d hours ago", ($curTime-$intTime) / (60*60) );
     }
     else if ( ($curTime-$intTime) <  (60*60*24*7)) //(24*60*60))
     {
        $strTime = sprintf("%d days ago", ($curTime-$intTime) / (60*60*24) );
     }
     else
     {  // sample: "12.22 am Sat 21-Jul 2012"
        $strTime = date("g.i a D j-M Y", $intTime);
     }
     return $strTime;
}