dousui8263 2012-01-06 14:42
浏览 27
已采纳

DateTime diff在Wordpress页面中无法正常工作

All, I have the following PHP code to determine how many years apart two dates are on my Wordpress page:

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

I installed the Exec-PHP plugin for Wordpress to display this properly. However when I try and display my page I get the following error:

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

How can I get this to work properly? Thanks!

  • 写回答

2条回答 默认 最新

  • dongzhangnong2063 2012-01-06 14:53
    关注

    I remember this question a while back: How to calculate the difference between two dates using PHP?

    With some small adjustments it looks like this:

    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");
    

    Output:

    4
    2
    

    Number to letters function modified from this site: http://www.phpro.org/examples/Convert-Numbers-to-Words.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler