PHP日期与自定义格式的差异

PHP日期与自定义格式的差异,php,Php,由于日期格式的原因,我在计算两个日期之间的差异时遇到一些问题,请帮助我解决此问题 日期1-(格式:d/m/Y) 日期2-(格式:d/m/Y) 我的密码- $diff = abs($date2 - $date1); $years = floor($diff / (365*60*60*24)); $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24)); $days = floor(($diff - $years *

由于日期格式的原因,我在计算两个日期之间的差异时遇到一些问题,请帮助我解决此问题

日期1-(格式:d/m/Y)

日期2-(格式:d/m/Y)

我的密码-

$diff = abs($date2 - $date1);  
$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)); 

// Print the result 
printf("%d years, %d months, %d days", $years, $months, $days); 

您不必手动计算天数、月份等。PHP中已经有了DateTime类,您可以利用它

$date1=DateTime::createFromFormat('d/m/Y','20/05/2020');//使用$date1=新日期时间(“现在”);目前
$date2=DateTime::createFromFormat('d/m/Y','25/05/2020');
$interval=$date1->diff($date2);
printf(“%d年、%d月、%d天”、$interval->y、$interval->m、$interval->d);

PHP官方文档:

首先应该使用日期格式(格式:Y/m/d),其次使用strotime将日期转换为秒,因为abs函数使用数值。请尝试以下代码:

date_default_timezone_set("Asia/Kolkata");
$date1 = strtotime(date('Y/m/d'));
$date2 = strtotime('2020/05/27'); 
$diff = abs($date2 - $date1);  
$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)); 

// Print the result 
printf("%d years, %d months, %d days", $years, $months, $days); 
输出:

0 years, 0 months, 7 days

在我的数据库中,我有超过10000个条目,所以我现在很难更改日期格式。非常感谢#Harish,它工作得很好:)很高兴听到。如果你想玩更多的Date游戏,请使用PHP文档。
date_default_timezone_set("Asia/Kolkata");
$date1 = strtotime(date('Y/m/d'));
$date2 = strtotime('2020/05/27'); 
$diff = abs($date2 - $date1);  
$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)); 

// Print the result 
printf("%d years, %d months, %d days", $years, $months, $days); 
0 years, 0 months, 7 days