将今天的日期设置为其他2个日期之间的差额

时间:2019-03-06 08:30:42

标签: php date

我正在计算两个日期之间的差额

$diff = abs(strtotime($result2["expiry_date"]) - strtotime($result2["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));

但是我想设置一个新变量($new_date)作为上述两个日期之间的差。

例如,

$result2["expiry_date"] = '2018-03-06'
$result2["start_date"] = '2019-03-06'

相差1年

所以$new_date = '2020-03-06'

基本上,我需要设置$new_date,它是新的expiry_date

因此,我需要计算出当前开始日期和到期日期之间的时间,然后将相同的时间段添加到expiry_date中以获取新的到期日期

3 个答案:

答案 0 :(得分:1)

如果仅使用日期字符串,则不需要该复杂功能

$datetime1 = new DateTime('2017-03-06');
$datetime2 = new DateTime('2018-03-06');
$datetime3 = $datetime2->add(new DateInterval('P' . $datetime1->diff($datetime2)->y . 'Y'));

echo $datetime3->format('Y-m-d');

这仅在差异以年为单位时有效,但是您可以轻松地将该DateInterval更改为其他差异值(月,日等)。

答案 1 :(得分:1)

您需要将日期差异添加到开始日期

 $date2='2019-03-06';
    $date1='2018-03-06';


    $timeDiff = abs(strtotime($date2) - strtotime($date1));

    $numberDays = $timeDiff/86400;  // 86400 seconds in one day

    $numberDays = intval($numberDays)+1;

    echo date('Y-m-d', strtotime($date2. " + $numberDays days"));

OP:

2020-03-06

答案 2 :(得分:1)

$result2["expiry_date"] = new \DateTime('2018-03-06');
$result2["start_date"] = new \DateTime('2019-03-06');

$diff = $result2["expiry_date"]->diff($result2["start_date"]);
$newDate = (new \DateTime())->add($diff);
var_dump($newDate->format('Y-m-d'));