2012-01-06 70 views
0

所有, 我有以下的PHP代碼,以確定有多少年開的兩個日期都是我的WordPress頁面上:日期時間差異不是WordPress的頁面正常工作

<?php 
$date1 = new DateTime("2003-03-24"); 
$current_date = new DateTime(date("Y-m-d")); 
$interval = $date1->diff($current_date); 
echo $interval->y; 
?> 

我安裝了Exec的-PHP WordPress插件正確顯示。然而,當我嘗試並顯示我的網頁,我得到以下錯誤:

Fatal error: Call to undefined method DateTime::diff() in /home/person/test.website.com/wp-content/plugins/exec-php/includes/runtime.php(42) : eval()'d code on line 7

我如何能得到這個正常工作?謝謝!

+0

什麼版本的PHP安裝? – ManseUK 2012-01-06 14:44:01

+0

這只是計算整年?應該很簡單,寫一個替代 – OptimusCrime 2012-01-06 14:46:47

+0

@OptimusCrime它只是數數整年。你有替代方法來做到這一點?謝謝。 – user1048676 2012-01-06 14:48:28

回答

1

我記得這個問題而回:How to calculate the difference between two dates using PHP?

有了它看起來像這樣一些小的調整:

function convert_number($number) { 
    $Gn = floor($number/1000000); /* Millions (giga) */ 
    $number -= $Gn * 1000000; 
    $kn = floor($number/1000);  /* Thousands (kilo) */ 
    $number -= $kn * 1000; 
    $Hn = floor($number/100);  /* Hundreds (hecto) */ 
    $number -= $Hn * 100; 
    $Dn = floor($number/10);  /* Tens (deca) */ 
    $n = $number % 10;    /* Ones */ 

    $res = ""; 

    if ($Gn) 
     $res .= convert_number($Gn) . " Million"; 
    if ($kn) { 
     $res .= (empty($res) ? "" : " ") . 
     convert_number($kn) . " Thousand"; 
    } 

    if ($Hn) { 
     $res .= (empty($res) ? "" : " ") . 
     convert_number($Hn) . " Hundred"; 
    } 

    $ones = array("", "One", "Two", "Three", "Four", "Five", "Six","Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen","Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eightteen","Nineteen"); 
    $tens = array("", "", "Twenty", "Thirty", "Fourty", "Fifty", "Sixty","Seventy", "Eigthy", "Ninety"); 

    if ($Dn || $n) { 
     if (!empty($res)) 
      $res .= " and "; 

     if ($Dn < 2) 
     $res .= $ones[$Dn * 10 + $n]; 
     else { 
      $res .= $tens[$Dn]; 

      if ($n) 

      $res .= "-" . $ones[$n]; 
     } 
    } 

    if (empty($res)) 
     $res = "zero"; 

    return $res; 
} 

function yearsFromNow ($date) { 
    return convert_number(floor(abs(strtotime($date) - strtotime(date("Y-m-d")))/(365*60*60*24))); 
} 

echo yearsFromNow("2007-03-24"); 
echo yearsFromNow("2009-06-26"); 

輸出:

​​3210

數以信取本網站修改功能:http://www.phpro.org/examples/Convert-Numbers-to-Words.html

+0

非常感謝你的作品。我得到的答案是8。根據返回的內容,是否有無論如何使這個讀取八個或四個等等? – user1048676 2012-01-06 15:08:40

+0

你是什麼意思「讀八或四」?用文字而不是數字? – OptimusCrime 2012-01-06 15:11:41

+0

這是正確的。 – user1048676 2012-01-06 15:15:05

1

如在manual,DateTime::Diff(和所有DateInterval函數)中所述,僅在PHP> = 5.3.0中可用。

您需要安裝該版本,或發現使用另一套函數一種解決方法。 Here是如何使用舊的基於時間戳的日期函數執行此操作的示例。