我想创建一个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;
答案 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;
}