2012-01-06 66 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是如何使用旧的基于时间戳的日期函数执行此操作的示例。