在 php 中创建日期->差异时如何包含开始日期
How to include the startdate when create the date->diff in php
如何包括开始日期。当你计算天数时,它会忽略第一天,但我也想包括第一天。
$d1 = '2018-02-01 00:00:00';
$d2 = '2018-02-05 00:00:00';
function timeDifference($dT1, $dT2){
$d1 = new DateTime($dT1);
$d2 = new DateTime($dT2);
$d = $d1->diff($d2);
$total = $d->days;
$month = $d->m.' months';
$days = $d->d.' days';
if ($total > 30) {
$returnDate = $month.' '.$days;
}
else {
$returnDate = $days;
}
return $returnDate;
}
echo timeDifference($d1, $d2); // 4 (i want 5)
函数按预期运行。在日期 2018-02-01 00:00:00
和日期 2018-02-05 00:00:00
之间实际上有 4 天(01、02、03、04)。
第五个不算,因为日期2018-02-05 00:00:00
算上限
如果您希望您的函数 returns 5 而不是 4,请在其中添加增量或在右侧输入日期 2018-02-06 00:00:00
.
好吧,01. 和 05. 之间相差四天,它没有忽略任何东西。你为什么不那样做呢?
€dit:请注意,如果日期差异超过一个月(例如 30 天 +1 = 31,但该月只有 30 天...),这仍然会出错...)
<?PHP
$d1 = '2018-02-01 00:00:00';
$d2 = '2018-02-05 00:00:00';
function timeDifference($dT1, $dT2){
$d1 = new DateTime($dT1);
$d2 = new DateTime($dT2);
$d = $d1->diff($d2);
$total = $d->days;
$month = $d->m.' months';
$dayDifference = $d->d;
if($dayDifference !== 0)
{
$dayDifference++;
}
$days = $dayDifference.' days';
if ($total > 30) {
$returnDate = $month.' '.$days;
}
else {
$returnDate = $days;
}
return $returnDate;
}
echo timeDifference($d1, $d2);
?>
2:
<?PHP
$d1 = '2018-02-01 00:00:00';
$d2 = '2018-02-05 00:00:00';
function timeDifference($dT1, $dT2){
$d1 = new DateTime($dT1);
$d1->sub(new DateInterval("P1D"));
$d2 = new DateTime($dT2);
$d = $d1->diff($d2);
$total = $d->days;
$month = $d->m.' months';
$days = $d->d.' days';
if ($total > 30) {
$returnDate = $month.' '.$days;
}
else {
$returnDate = $days;
}
return $returnDate;
}
echo timeDifference($d1, $d2);
?>
如何包括开始日期。当你计算天数时,它会忽略第一天,但我也想包括第一天。
$d1 = '2018-02-01 00:00:00';
$d2 = '2018-02-05 00:00:00';
function timeDifference($dT1, $dT2){
$d1 = new DateTime($dT1);
$d2 = new DateTime($dT2);
$d = $d1->diff($d2);
$total = $d->days;
$month = $d->m.' months';
$days = $d->d.' days';
if ($total > 30) {
$returnDate = $month.' '.$days;
}
else {
$returnDate = $days;
}
return $returnDate;
}
echo timeDifference($d1, $d2); // 4 (i want 5)
函数按预期运行。在日期 2018-02-01 00:00:00
和日期 2018-02-05 00:00:00
之间实际上有 4 天(01、02、03、04)。
第五个不算,因为日期2018-02-05 00:00:00
算上限
如果您希望您的函数 returns 5 而不是 4,请在其中添加增量或在右侧输入日期 2018-02-06 00:00:00
.
好吧,01. 和 05. 之间相差四天,它没有忽略任何东西。你为什么不那样做呢?
€dit:请注意,如果日期差异超过一个月(例如 30 天 +1 = 31,但该月只有 30 天...),这仍然会出错...)
<?PHP
$d1 = '2018-02-01 00:00:00';
$d2 = '2018-02-05 00:00:00';
function timeDifference($dT1, $dT2){
$d1 = new DateTime($dT1);
$d2 = new DateTime($dT2);
$d = $d1->diff($d2);
$total = $d->days;
$month = $d->m.' months';
$dayDifference = $d->d;
if($dayDifference !== 0)
{
$dayDifference++;
}
$days = $dayDifference.' days';
if ($total > 30) {
$returnDate = $month.' '.$days;
}
else {
$returnDate = $days;
}
return $returnDate;
}
echo timeDifference($d1, $d2);
?>
2:
<?PHP
$d1 = '2018-02-01 00:00:00';
$d2 = '2018-02-05 00:00:00';
function timeDifference($dT1, $dT2){
$d1 = new DateTime($dT1);
$d1->sub(new DateInterval("P1D"));
$d2 = new DateTime($dT2);
$d = $d1->diff($d2);
$total = $d->days;
$month = $d->m.' months';
$days = $d->d.' days';
if ($total > 30) {
$returnDate = $month.' '.$days;
}
else {
$returnDate = $days;
}
return $returnDate;
}
echo timeDifference($d1, $d2);
?>