简体   繁体   English

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

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

I want to check if there is any sat or sun between two dates in php.我想检查php中两个日期之间是否有sat或sun。

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

I've tried other solution asked here but they didn't worked well.我试过这里提出的其他解决方案,但效果不佳。 I want it in laravel 5.2 so if there is any easy way to handle this please guide me.我希望它在 laravel 5.2 中,所以如果有任何简单的方法来处理这个问题,请指导我。 thanks!谢谢!

Update i also want to get if there is weekday(mon-fri) between two dates.更新我也想知道两个日期之间是否有工作日(周一至周五)。 i need it because user can select sat and Sunday only so in this condition I've to hide weekday option from him.我需要它,因为用户只能选择周六和周日,所以在这种情况下我必须向他隐藏工作日选项。 So what I need is a method which tells me if start and end date has weekend or weekdays or both in it.所以我需要的是一种方法,它告诉我开始和结束日期是否包含周末或工作日或两者都包含在内。

You can use date("N") to get the current day of the week and add the difference of days between your dates... If this is bigger or equal to 6 than it's a weekend between or one date is in the weekend.您可以使用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
}

try试试

<?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;

hoe it helps :)锄头有帮助:)

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

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