$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为字符串,请帮忙。
答案 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;
}
}