Php 警告:strotime()要求参数1为字符串

Php 警告:strotime()要求参数1为字符串,php,Php,在您回答之前,让我澄清一下,我的主机提供商不支持高于5.2的php版本,所以不要建议使用diff和interval函数 我收到警告:strotime()希望参数1是字符串,请帮助。$startdate和$enddate是日期时间对象,而不是字符串。需要一个字符串,您只需传递一个字符串,如下所示: $startdate = new DateTime("2013-11-15"); $enddate = new DateTime("2013-11-20"); $timestamp_start = st

在您回答之前,让我澄清一下,我的主机提供商不支持高于5.2的php版本,所以不要建议使用diff和interval函数


我收到警告:strotime()希望参数1是字符串,请帮助。

$startdate
$enddate
是日期时间对象,而不是字符串。需要一个字符串,您只需传递一个字符串,如下所示:

$startdate = new DateTime("2013-11-15");
$enddate = new DateTime("2013-11-20");
$timestamp_start = strtotime($startdate);
$timestamp_end = strtotime($enddate);
$difference = abs($timestamp_end - $timestamp_start); 
$days = floor($difference/(60*60*24));
echo " ";
echo 'Days '.$days;
$months = floor($difference/(60*60*24*30));
echo 'Months '.$months;
$years = floor($difference/(60*60*24*365));
echo 'Years '.$years ;
echo " ";

如果可能的话,我建议升级到更高的PHP版本<在PHP中处理时间和日期时,code>DateTime类是最好的方法。

对于
strotime()


我有一个函数,可以满足你的要求

你只需要把它传递给dates,它就会告诉你这两个的区别

$timestamp_start = strtotime("2013-11-15");
$timestamp_end = strtotime("2013-11-20");

$startdate
/
$enddate
DateTime
而不是字符串。您实际上只是将它们声明为
DateTime
?这看起来有点奇怪吗?它不是在内部解析吗?不-为什么你甚至需要
DateTime
类,而你不使用它呢?托管提供商不支持高于5.2的php——那么你的托管提供商不好,你应该尽快切换到更好的主机。PHP5.2在2010年底已经失效;近四年来它没有任何安全更新。任何一家主机提供商在经过这么长时间后仍将其放在服务器上,这是一种疏忽,很可能会被黑客入侵。“我建议你找一个更好的主机。”Spudley是著名的主机提供商,你一定听说过主机gator。
$timestamp_start = strtotime("2013-11-15");
$timestamp_end = strtotime("2013-11-20");
function getDateDifference($start_date, $end_date) {

    $diff = abs(strtotime($end_date) - strtotime($start_date));
    $years = floor($diff / (365*60*60*24));
    $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24));
    $days = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));

    if($years == 1) {
        $year_str = ' year';
    }
    else {
        $year_str = ' years';
    }
    if($months == 1) {
        $month_str = ' month';
    }
    else {
        $month_str = ' months';
    }
    if($days == 1) {
        $day_str = ' day';
    }
    else {
        $day_str = ' days';
    }

    if($years == 0) {

        if($months == 0) {

            return $days.$day_str;
        }
        return $months.$month_str. ' '.$days.$day_str;
    }
    else {
        return $years.$year_str.' '.$months.$month_str. ' '.$days.$day_str;
    }
}