获得两个日期之间的确切差异

时间:2017-02-03 18:33:55

标签: php jquery date

我正在实施房地产申请,我需要仔细检查两个日期之间的日期差异。 我希望采用javascript jquery方法,但欢迎任何其他解决方案。

我的目标是不允许用户输入差异大于2(或5)年的日期。

我和其他许多人一起试过这个解决方案: How to get the months between 2 dates

不幸的是,这不是我真正需要的。

当我这样做时: 租金将于01-01-2017开始 并将于201年12月31日结束 我将获得24个月(完全租用2年),这对我的目的是正确的。

但如果我尝试: 租金将于01-01-2017开始 并将于01-01-2019结束 我仍然会得到24个月(但租用了2年零1天),这对我来说是不正确的。

由于我国(荷兰)的法律规定,合同在上述两种情况之间存在很大差异。

我将感谢你们提供的任何帮助。

4 个答案:

答案 0 :(得分:1)

如评论中所述,添加2年并减去1天。最好使用DateTime类:

$dt = DateTime::createFromFormat('d-m-Y', '01-01-2017');

$dt->add(new DateInterval('P2Y'));
$dt->sub(new DateInterval('P1D'));

var_dump($dt->format('d-m-Y'));

这将产生所需的结果:

string(10) "31-12-2018"

答案 1 :(得分:0)

这应该准确并且要注意闰年等......

<?php    
$date = date_create('02-01-2017');
date_add($date, date_interval_create_from_date_string('2 years'));
$twoyears = date_format($date, 'd-m-Y');
echo $twoyears; // 02-01-2019

$rentperiod = $twoyears->sub(DateInterval::createFromDateString('1 day'));
echo $rentperiod; //01-31-2019

答案 2 :(得分:0)

这是SunilKmCharde的一个很好的功能,来自PHP手册中的User Contributed Notes

<?php
  //////////////////////////////////////////////////////////////////////
  //PARA: Date Should In YYYY-MM-DD Format
  //RESULT FORMAT:
  // '%y Year %m Month %d Day %h Hours %i Minute %s Seconds'        =>  1 Year 3 Month 14 Day 11 Hours 49 Minute 36 Seconds
  // '%y Year %m Month %d Day'                                    =>  1 Year 3 Month 14 Days
  // '%m Month %d Day'                                            =>  3 Month 14 Day
  // '%d Day %h Hours'                                            =>  14 Day 11 Hours
  // '%d Day'                                                        =>  14 Days
  // '%h Hours %i Minute %s Seconds'                                =>  11 Hours 49 Minute 36 Seconds
  // '%i Minute %s Seconds'                                        =>  49 Minute 36 Seconds
  // '%h Hours                                                    =>  11 Hours
  // '%a Days                                                        =>  468 Days
  //////////////////////////////////////////////////////////////////////
  function dateDifference($date_1 , $date_2 , $differenceFormat = '%a' )
  {
      $datetime1 = date_create($date_1);
      $datetime2 = date_create($date_2);

      $interval = date_diff($datetime1, $datetime2);

      return $interval->format($differenceFormat);

  }
?>

答案 3 :(得分:0)

使用Javascript:


    function diff( d1, d2){
        x = new Date(d2-d1);
        return x.getUTCDate() + " " + x.getUTCMonth() + " " + (x.getUTCFullYear() - 1970);
    }

示例:

a = new Date('01-01-2017');
b = new Date('01-01-2019');
diff(a,b);
"Days:1, Months: 0, Years: 2"