2013-04-16 4 views
-2

Je veux faire une classe PHP qui peut collecter des informations de la base de données et vérifie quand cette opération particulière a été effectuée, basé sur le fait qu'il devrait pouvoir me dire que l'opération a été effectuée 10 minutes il y a, ou il y a 2 jours, ou il y a 3 ans, je fait une classe PHP, mais parfois, il renvoie le temps négatif, et j'ai vérifié et recoupées il ne semble pas que si quelque chose avait tort, s'il vous plaît je besoin d'aideComment faire une classe de temps 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"; 
          } 
         } 
        } 
       } 
      } 

     } 
    } 
} 

?>

+3

vous aurez besoin de nous montrer un peu de code si vous souhaitez que nous vous aider à trouver les bugs. – Spudley

+1

Aucune réponse jusqu'à ce que vous essayiez quelque chose –

+1

aussi, savez-vous que PHP a une classe 'DateTime' intégrée, qui est capable de faire ce que vous avez décrit? – Spudley

Répondre

1

Pas besoin de classe. Si votre temps est négatif, vous pouvez avoir soustraite les heures dans le mauvais sens.

Dans ce code, $ INTTIME vient tout simplement de temps()

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; 
} 
Questions connexes