Php 如何验证日期范围是否包括周末?
我有一个来自MySQL的日期范围,例如: 2016-01-05至2016-01-10。我想检查周六和周日是否都在该日期范围内,不一定是连续的。到目前为止,我发现:Php 如何验证日期范围是否包括周末?,php,date,datetime,Php,Date,Datetime,我有一个来自MySQL的日期范围,例如: 2016-01-05至2016-01-10。我想检查周六和周日是否都在该日期范围内,不一定是连续的。到目前为止,我发现: function isWeekend($date) { return (date('N', strtotime($date)) >= 6); } 因此,我必须在范围内的每一天循环,看看这是否是周末 有更好的方法吗?你不必每天都检查 我将尝试用简单的英语解释这一点: 首先,检查它是否在周末开始。如果成功了,你已经成功了。
function isWeekend($date) {
return (date('N', strtotime($date)) >= 6);
}
因此,我必须在范围内的每一天循环,看看这是否是周末
有更好的方法吗?你不必每天都检查 我将尝试用简单的英语解释这一点:
首先,检查它是否在周末开始。如果成功了,你已经成功了。如果日期跨度超过6天,则可以立即假定是,包括周末。如果是5天,那么第一天必须在周一,否则它包含一个周末。如果是四点,就必须在星期二。。。等等 你不需要整天重复。您只需要知道日期范围的长度和一周中的第一天 假设您有两个
DateTime
对象:
$start = new DateTime('2016-01-05');
$end = new DateTime('2016-01-10');
通过检查日期范围的长度加上开始日期的数字工作日是否大于6,可以确定日期范围中是否包含周六和周日
function includes_weekend (DateTime $start, DateTime $end) {
return $start->diff($end)->format('%a') + $start->format('w') > 6;
}
format(“%a”)
返回diff
返回的DateInterval
中的总天数,format('w')
返回一周中的数字日(星期日=0)。日期是否总是短于7天?@Ares有时,日期可以是任意长度的天。谢谢你的回复,但你的逻辑是错误的。如果我的约会范围从星期六开始到星期二结束,第一天永远不会是星期一。对不起,我应该澄清一下。总是检查第一天是否是周末。这将消除边缘情况。