2012-09-01 93 views
0

我試圖將間隔轉換爲單詞。我遇到了這個錯誤Argument 1 passed to Database::intervalToWords() must be an instance of DateInterval, string given。我如何解決這個問題,所以我沒有得到一個錯誤?將時間轉換爲DataInterval實例

//query from database 

function one() { 
      $posted = htmlspecialchars(strtotime($row['posted']),ENT_QUOTES); 
          $time_now = time(); //current date/time 

         $newposted = date('Y-m-d h:i:s',($time_now-$posted)); 

         $newposted = $this->intervalToWords($newposted); 

} 





function intervalToWords(DateInterval $interval) 
{ 
    $intervalStr = ''; 
    if ($interval->y > 0) { 
    //if over a year 
     $intervalStr = 'Over ' . $interval->y . ' year' . ($interval->y > 1 ? 's' : ''); //years or year 
    } else { 
     if ($interval->m > 2) { 
     //if over 2 months 
      $intervalStr = $interval->m . ' months'; 
     } else if ($interval->m > 0) { 
      //if a month 
      $intervalStr = $interval->m . ' month' . ($interval->m > 1 ? 's' : '') . ' and ' . $interval->d . ' day' . ($interval->d > 1 ? 's' : ''); 
     } else { 
      if ($interval->d > 1) { 
       //if over a day 
       $intervalStr = $interval->d . ' days'; 
      } else if($interval->d == 1) { 
       //if a day 
       $intervalStr = '1 day, ' . $interval->h . ' hour' . ($interval->h > 1 ? 's' : ''); 
      } else { 
       if ($interval->h > 0) { 
       //if over an hour 
        $intervalStr = $interval->h . ' hour' . ($interval->h > 1 ? 's' : '') . ', '; 
       } 
       if ($interval->i > 0) { 
       //if over a minute 
        $intervalStr .= $interval->i . ' minute' . ($interval->i > 1 ? 's' : ''); 
       } else { 
        $intervalStr = 'less than 1 minute'; 
       } 
      } 
     } 
    } 

    return $intervalStr . ' ago'; 
} 
+0

你已經清楚地複製/粘貼一些教程驗證碼,甚至沒有閱讀它,如果你問這樣的問題。 –

回答

0

您可能正在尋找:DateTime::diff()

但你需要一個基準DateTime從把分差

+0

我可以將time()轉換爲DateTime格式嗎? – user892134

+0

是的,使用[DateTime :: setTimestamp()](http://www.php.net/manual/en/datetime.settimestamp.php)。 –

+0

我試過使用差異,我得到這個錯誤'調用未定義的方法DateTime :: diff' ..這是什麼意思? – user892134

0

而且你可能忘記將DateInterval對象的實例:

//query from database  
function one() { 
      $posted = htmlspecialchars(strtotime($row['posted']),ENT_QUOTES); 
          $time_now = time(); //current date/time 

         //$newposted = date('Y-m-d h:i:s',($time_now-$posted)); 
         $dv = new DateInterval('PT'.($time_now-$posted).'S'); 

         $newposted = $this->intervalToWords($dv); 

} 
+0

如果這可行,這是比我更直接的解決方案。 –

+0

我得到這個錯誤'Class'DateInterval'找不到'? – user892134

+0

(PHP 5> = 5.3.0)? – gvsrepins