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条)

报告相同问题?

悬赏问题

  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程