我正在使用 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 的库。



相关讨论

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


声明:本站(华域联盟www.cnhackhy.com)所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。