关于日期时间:如何在 PHP 中找到一个日期范围内的另一个日期范围内的天数? | 珊瑚贝

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 的库。

  • 感谢您提供此解决方案,但它不适用于某些极少数情况。


来源:https://www.codenong.com/31073902/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9752.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?