警告:strtotime()期望参数1为字符串

时间:2013-11-19 13:50:40

标签: php

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

在你回答之前,让我告诉我,我的托管服务提供商不支持高于5.2的php版本,所以不建议使用diff和interval函数。

我收到警告:strtotime()希望参数1为字符串,请帮忙。

3 个答案:

答案 0 :(得分:1)

$startdate$enddate是DateTime对象,而不是字符串。 strtotime()需要一个字符串,你应该简单地传递一个字符串,如下所示:

$startdate = "2013-11-15";
$enddate = "2013-11-20";

如果可能的话,我建议你使用更高版本的PHP版本。当你在PHP中处理时间和日期时,DateTime类是最好的方法。

答案 1 :(得分:0)

new DateTime

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

答案 2 :(得分:0)

我有一个功能可以完成我认为你想要的功能。

你只需要将它传递给日期,它会告诉你y 2之间的差异

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;
    }
}