Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 两个日期之间的时间间隔_Php - Fatal编程技术网

Php 两个日期之间的时间间隔

Php 两个日期之间的时间间隔,php,Php,我使用以下代码查找两个日期之间的过去时间: $date1 = "1900-00-00"; $date2 = "2000-00-00"; $diff = abs(strtotime($date2) - strtotime($date1)); $years = floor($diff / (365*60*60*24)); $months = floor(($diff - $years * 365*60*60*24) / (30*60*60*24)); $days = floor(($diff -

我使用以下代码查找两个日期之间的过去时间:

$date1 = "1900-00-00";
$date2 = "2000-00-00";

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

printf("%d years, %d months, %d daysn", $years, $months, $days);
但它打印的是
100年,0个月,24天n
,而不是
100年,0个月,0天n

发生了什么?

您可以使用类的方法获取两个日期之间的差异。您不需要自己计算差异:

<?php
$date1 = "1900-00-00";
$date2 = "2000-00-00";

$dt1 = new DateTime($date1);
$dt2 = new DateTime($date2);

$diff = $dt1->diff($dt2);

printf("%d years, %d months, %d days", $diff->y, $diff->m, $diff->d);
//output: 100 years, 0 months, 0 days
演示:


以下是最简单的解决方案:-

$date1 = "1900-00-00";
$date2 = "2000-00-00";

$expDate =  date_create($date2);
$todayDate = date_create($date1);
$diff = date_diff($todayDate, $expDate);
printf("%d years, %d months, %d days", $diff->y, $diff->m, $diff->d);

你会得到你期望的结果。

有闰年,一年增加一天(每四年增加一天,所以有下限(99/4)闰日,这是你的24天,因为1900年和2000年不算闰年),还有闰秒。你不应该试图自己计算。如答案所示,使用
diff
方法。
$date1 = "1900-00-00";
$date2 = "2000-00-00";

$expDate =  date_create($date2);
$todayDate = date_create($date1);
$diff = date_diff($todayDate, $expDate);
printf("%d years, %d months, %d days", $diff->y, $diff->m, $diff->d);