Dus*_*tin 2 php datetime compare date overlap
如果我有两个日期范围(例如5月1日 - 5月31日和5月23日 - 6月5日),那么最好的方法是找出这两个时期在PHP中重叠的天数(因此会返回9)?有没有办法使用DatePeriod对象?
编辑(希望)澄清我的问题:
基本上我想要一个函数,给定任何两个日期范围,将返回两个日期范围之间共同的天数.如果有重叠,它将返回重叠天数,否则它将返回0.我认为这可以通过为每个范围创建一个日期数组,循环遍历它们以查找相同的日期,并使用变量来计算比赛的数量 - 但我正在寻找更优雅的东西.
Dus*_*tin 26
感谢@ phpisuber01并确定两个日期范围重叠是否提供了基本逻辑.这四个变量需要是DateTime对象:
function datesOverlap($start_one,$end_one,$start_two,$end_two) {
if($start_one <= $end_two && $end_one >= $start_two) { //If the dates overlap
return min($end_one,$end_two)->diff(max($start_two,$start_one))->days + 1; //return how many days overlap
}
return 0; //Return 0 if there is no overlap
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11425 次 |
| 最近记录: |