Mum*_*azi 3 php codeigniter date range
我的 Codeigniter 应用程序中有 2 个日期范围,我想计算这些日期范围之间相交的天数。有任何想法吗?
日期 1 开始 = YYYY-MM-DD;日期 1 结束 = YYYY-MM-DD;
日期2开始 = YYYY-MM-DD; 日期2结束 = YYYY-MM-DD;
像这样的东西应该有效
$datetimeStart1 = new DateTime('2015-12-10');
$datetimeEnd1 = new DateTime('2015-12-20');
$datetimeStart2 = new DateTime('2015-12-12');
$datetimeEnd2 = new DateTime('2015-12-28');
// following http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap
if ($datetimeStart1 < $datetimeEnd2 && $datetimeEnd1 > $datetimeStart2) {
echo min($datetimeEnd1,$datetimeEnd2)->diff(max($datetimeStart2,$datetimeStart1))->days+1;
} else {
echo 'no overlap';
}
Run Code Online (Sandbox Code Playgroud)
演示: http: //3v4l.org/9Pecb
仅适用于 PHP 5.2
$datetimeStart1 = new DateTime('2015-12-10');
$datetimeStart1 = $datetimeStart1->format('U');
$datetimeEnd1 = new DateTime('2015-12-20');
$datetimeEnd1 = $datetimeEnd1->format('U');
$datetimeStart2 = new DateTime('2015-12-12');
$datetimeStart2 = $datetimeStart2->format('U');
$datetimeEnd2 = new DateTime('2015-12-28');
$datetimeEnd2 = $datetimeEnd2->format('U');
// following http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap
if ($datetimeStart1 < $datetimeEnd2 && $datetimeEnd1 > $datetimeStart2) {
echo round(
((min($datetimeEnd1,$datetimeEnd2)) - (max($datetimeStart2,$datetimeStart1))) / (60*60*24)) + 1;
} else {
echo 'no overlap';
}
Run Code Online (Sandbox Code Playgroud)
演示: http: //3v4l.org/a1WLk
归档时间: |
|
查看次数: |
893 次 |
最近记录: |