Php 检查一个工作日是否介于两个工作日之间

Php 检查一个工作日是否介于两个工作日之间,php,algorithm,Php,Algorithm,我最近一直被困在我认为应该是一个相当简单的问题上 基本上,我将工作日表示为一个数字(1-7),表示周一到周日 我需要一个具有此原型的函数: function weekday_between(weekday, start_weekday, end_weekday) { //if the weekday is between start and end then return true, otherwise return false ... } 我遇到的主要问题是当开始工作日大于结

我最近一直被困在我认为应该是一个相当简单的问题上

基本上,我将工作日表示为一个数字(1-7),表示周一到周日

我需要一个具有此原型的函数:

function weekday_between(weekday, start_weekday, end_weekday) {
    //if the weekday is between start and end then return true, otherwise return false
    ...
}
我遇到的主要问题是当开始工作日大于结束工作日时,因为我认为您不能仅仅依赖嵌套的if语句(?)

例如:

weekday_between(2, 1, 3) //return true
weekday_between(1, 7, 2) //return true, the hard part
weekday_between(2, 7, 1) //return false
weekday_between(6, 7, 1) //return false
该项目是用php编写的,但伪代码很好,甚至只是正确方向上的一点。

函数weekday\u between(weekday、start\u weekday、end\u weekday){
function weekday_between(weekday, start_weekday, end_weekday) {
    if (end_weekday < start_weekday)
        return (weekday > start_weekday) OR (weekday < end_weekday);
    else
        return (weekday > start_weekday) AND (weekday < end_weekday);
}
if(结束工作日<开始工作日) 返回(工作日>开始工作日)或(工作日<结束工作日); 其他的 返回(工作日>开始工作日)和(工作日<结束工作日); }
函数工作日之间(工作日、开始工作日、结束工作日){
if(结束工作日<开始工作日)
返回(工作日>开始工作日)或(工作日<结束工作日);
其他的
返回(工作日>开始工作日)和(工作日<结束工作日);
}

此处:$b=介于值之间,$s=开始值,$e=结束值

function weekday_between($s, $b, $e){
  if($s>$e) $s -=7;
  return (($b>$s)&&($b<$e));
} 
function weekday\u介于($s、$b、$e)之间{
如果($s>$e)$s-=7;

返回($b>$s)&($b此处:$b=介于值之间,$s=开始值,$e=结束值

function weekday_between($s, $b, $e){
  if($s>$e) $s -=7;
  return (($b>$s)&&($b<$e));
} 
function weekday\u介于($s、$b、$e)之间{
如果($s>$e)$s-=7;

return($b>$s)&($bAny weekday始终在任何其他两个工作日之间…:o)如deceze所述,工作日在两个工作日之间…因此您必须使用b/w 2和4(包括2和4)@PatrickGalbraith说得很对。我之所以这么问,是因为通常当人们带着所需的原型来,但函数体是空的时,这是一项任务。@deceze和Anish:星期五在星期二和星期四之间吗?(可能在星期四和星期二之间,但是拜托……你足够聪明,能够理解这个问题)@J.B是的,在同一周的星期二和下一周的星期四之间。换句话说,为了使此条件真正准确,您需要规定开始日和结束日之间的间隔不得超过1周。:o)任何工作日始终在任何其他两个工作日之间……:o)正如deceze所提到的,工作日在两个工作日之间……所以你必须使用b/w 2和4(包括2和4)@PatrickGalbraith足够公平。我只是问,因为通常当人们带着需要的原型来,但功能体是空的,这是一项任务。@deceze和Anish:星期五是星期二和星期四之间吗?(可能在星期四和星期二之间,但是拜托……你足够聪明,能够理解这个问题)@J.B是的,在同一周的星期二和下一周的星期四之间。换句话说,要使这个条件真正准确,你需要规定开始和结束日之间的间隔也不能超过1周。:o)引用OP:
weekday(1,7,2)//返回true,最难的部分
thx@deceze-修改为降低开始日期(如果它更大)。我认为这涵盖了所有边缘情况……如果没有,我将把我的答案发送到炼狱!引用OP:
weekday(1,7,2)之间)//返回true,最难的部分
thx@deceze-如果开始日期更大,则修改为降低开始日期。我认为这涵盖了所有边缘情况……如果没有,我将把我的答案发送到炼狱!这是一个相当简单的问题。这是一个相当简单的问题。