我正在实施房地产申请,我需要仔细检查两个日期之间的日期差异。
我希望采用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天),这对我来说是不正确的。
由于我国(荷兰)的法律规定,合同在上述两种情况之间存在很大差异。
我将感谢你们提供的任何帮助。
答案 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"