php返回日期/时间问题

时间:2013-03-17 08:43:53

标签: php date time

我在下面有一个简单的函数,它可以获得秒数,然后像#34; 2分钟前一样返回"," 9小时前"等...

如果我通过1< relativedate()'功能它只会返回1秒,依此类推。众所周知60 * 60 * 24 * 7 * 30或18144000sec = 1个月。因此,如果我在参数上传递值18144000,它应该返回1个月。但是,如果我在参数上传递一个值,请在relativedate()上说231440000,这应该超过一年,它将返回' 13个月'而不是1年。

function relativedate($secs) {
        $second = 1;
        $minute = 60;
        $hour = 60*60;
        $day = 60*60*24;
        $week = 60*60*24*7;
        $month = 60*60*24*7*30;
        $year = 60*60*24*7*30*365;

        if ($secs <= 0) { $output = "now";
        }elseif ($secs > $second && $secs < $minute) { $output = round($secs/$second)." second";
        }elseif ($secs >= $minute && $secs < $hour) { $output = round($secs/$minute)." minute";
        }elseif ($secs >= $hour && $secs < $day) { $output = round($secs/$hour)." hour";
        }elseif ($secs >= $day && $secs < $week) { $output = round($secs/$day)." day";
        }elseif ($secs >= $week && $secs < $month) { $output = round($secs/$week)." week";
        }elseif ($secs >= $month && $secs < $year) { $output = round($secs/$month)." month";
        }elseif ($secs >= $year && $secs < $year*10) { $output = round($secs/$year)." year";
        }else{ $output = " more than a decade ago"; }

        if ($output <> "now"){
            $output = (substr($output,0,2)<>"1 ") ? $output."s" : $output;
        }
        return $output;
    }



echo relativedate(60); // 1 minute

1 个答案:

答案 0 :(得分:0)

您的年度计算为365个月,而不是12个月