繁体   English   中英

如何检查php中两个日期之间是否有周末?

[英]How to check if there is a weekend between two dates in php?

我想检查php中两个日期之间是否有sat或sun。

$fromDate = '03/21/2016';
$toDate = '03/28/2016';

我试过这里提出的其他解决方案,但效果不佳。 我希望它在 laravel 5.2 中,所以如果有任何简单的方法来处理这个问题,请指导我。 谢谢!

更新我也想知道两个日期之间是否有工作日(周一至周五)。 我需要它,因为用户只能选择周六和周日,所以在这种情况下我必须向他隐藏工作日选项。 所以我需要的是一种方法,它告诉我开始和结束日期是否包含周末或工作日或两者都包含在内。

您可以使用date("N")获取一周中的当前日期并添加您的日期之间的天数差异......如果这大于或等于 6 比它是一个周末或一个日期在周末。

//Get current day of week. For example Friday = 5
$day_of_week = date("N", strtotime($fromDate));

$days = $day_of_week + (strtotime($toDate) - strtotime($fromDate)) / (60*60*24);
//strtotime(...) - convert a string date to unixtimestamp in seconds.
//The difference between strtotime($toDate) - strtotime($fromDate) is the number of seconds between this 2 dates. 
//We divide by (60*60*24) to know the number of days between these 2 dates (60 - seconds, 60 - minutes, 24 - hours)
//After that add the number of days between these 2 dates to a day of the week. So if the first date is Friday and days between these 2 dates are: 3 the sum will be 5+3 = 8 and it's bigger than 6 so we know it's a weekend between.



if($days >= 6){
  //we have a weekend. Because day of week of first date + how many days between this 2 dates are greater or equal to 6 (6=Saturday)
} else {
  //we don't have a weekend
}

试试

<?php
    $is_weekend = 0;
    $fromDate = strtotime('2016-03-21');
    $toDate = strtotime('2016-03-28');
    while (date("Y-m-d", $fromDate) != date("Y-m-d", $toDate)) {
        $day = date("w", $fromDate);
        if ($day == 0 || $day == 6) {
            $is_weekend = 1;
        }
        $fromDate = strtotime(date("Y-m-d", $fromDate) . "+1 day");
    }
    echo $is_weekend;

锄头有帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM