How do I find how many days are within a date range that are within another date range in PHP?
我正在使用 Carbon PHP 库。重复问题中的答案使用 PHP 的内置函数。
计算一个日期范围内有多少天在另一个日期范围内
下面是我用来查找日期范围($userDateStart 和 $userDateEnd)是否在另一个日期范围内($couponStart and$couponEnd`)的代码,它可以正常工作,没有任何错误,但我没有不知道如何找到在此日期范围内重叠/存在的日期?
我使用的库是 http://carbon.nesbot.com/docs/
在这种情况下,预期的结果应该是 4..希望你能帮助我。
1 2 3 4 5 6 7 8 9 10 11
|
$userDateStart = Carbon ::createFromFormat(‘Y-m-d’,‘2015-06-26’);
$userDateEnd = Carbon ::createFromFormat(‘Y-m-d’,‘2015-06-29’);
$couponStart = Carbon::createFromFormat(‘Y-m-d’,‘2015-06-26’); $couponEnd = Carbon::createFromFormat(‘Y-m-d’,‘2015-10-31’);
if(($userDateStart >= $couponStart && $userDateEnd <= $couponEnd) || ($couponStart >= $userDateStart && $couponEnd <= $userDateEnd)){ die("Yes,The date is within this date range"); } die("No,It is not within this date range"); |
- 您在理解上一个问题的答案时遇到的困难与该问题是否重复无关。
- 我正在使用 Carbon PHP 库。当然还有其他一些简单的方法可以计算天数。
- count 一个日期范围内有多少天在另一个日期范围内的可能重复
- @rogerduce他只是说它不是重复的。
- 我正在使用 Carbon PHP 库,我不想在重复的问题中使用内置的 PHP 间隔类,比如那个答案。
- @JayBlanchard 所以他使用的库与 PHP 的内置函数之间的区别……我会说没有重复。
- stackoverflow.com/questions/27245776/…
- 你读过我的问题吗? @JayBlanchard我想找出一个日期范围内有多少天在另一个日期范围内,它不像您发布的问题那么简单。
- 是的,我已经阅读了你的问题。当我试图提供帮助时,请不要问我类似的事情。
- 如果你觉得我的评论粗鲁,我很抱歉。
- 不,我这里不需要数据库。
- 我发布的那个链接非常清楚地解释了如何使用 between() 来确定一个实例是否在任何两个实例之间。它就在文档中。
根据提供的文档,您需要使用:
1 2 3
|
$dt = Carbon ::create(2012, 4, 30, 0);
echo $dt->diffInDays($dt->copy()->addMonth()); // 30
echo $dt->diffInDays($dt->copy()->addWeek()); // 7
|
所以要使用您的程序,我认为您需要这样做:
1 2 3 4 5 6 7 8 9 10 11 12
|
$userDateStart = Carbon ::createFromFormat(‘Y-m-d’,‘2015-06-26’);
$userDateEnd = Carbon ::createFromFormat(‘Y-m-d’,‘2015-06-29’);
$couponStart = Carbon::createFromFormat(‘Y-m-d’,‘2015-06-26’); $couponEnd = Carbon::createFromFormat(‘Y-m-d’,‘2015-10-31’);
//Determin the highest date from the starts and the minimum dates from the ends $startBetweenDate = $userDateStart->max($couponStart); $endBetweenDate = $userDateEnd->min($couponEnd);
//Now find how many days are between echo $startBetweenDate->diffInDays($endBetweenDate); //Should be 4 |
请注意:这没有经过测试,因为我没有安装 Carbon 的库。
- 感谢您提供此解决方案,但它不适用于某些极少数情况。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268565.html