【问题标题】:Difference between 2 dates and skip Saturday and Sunday [duplicate]2个日期之间的差异并跳过周六和周日[重复]
【发布时间】:2017-08-02 06:25:20
【问题描述】:

在 php 中,我使用此代码计算两个日期之间的天数差异。

$datetime1 = new DateTime('2009-10-11');
$datetime2 = new DateTime('2009-10-13');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%R%a days');

我得到了结果,但是如果星期六和星期日在这两个日期之间,有什么办法可以跳过它们。

【问题讨论】:

  • 这个代码在星期天跳过吗?我看不出它确实3v4l.org/t8jrv
  • @Vivek ?这里给出的答案有什么问题吗?

标签: php date datetime datediff


【解决方案1】:

看看我这样做和它的正常工作 你可以试试这个。

$day = date('l',strtotime($datte));
if($day == 'Saturday' || $day == 'Sunday')
{
 //SOME ACTION
}else{
  //SOME ACTION
}

其中 L 是定义日期全名。

【讨论】:

    【解决方案2】:

    我创建了一个数组,其中包含当天的所有日期数字表示(0-6 代表太阳和星期六)。
    如果它在 1-5(周一至周五)之间,请将其添加到数组中。
    数组的计数就是没有周六周日的天数。

    <?php
    
    $startdate = '2017-08-04';
    
    $datetime1 = new DateTime($startdate);
    $datetime2 = new DateTime('2017-08-07');
    $interval = $datetime1->diff($datetime2);
    $days =  $interval->format('%a');
    
    $arr =array();
    for($i=0;$i<=$days;$i++){
        $day = date("w Y-m-d l", strtotime($startdate) + $i*86400); 
        if((int)$day[0] >= 1 && (int)$day[0] <= 5 ) $arr[] = $day;
    }
    
    var_dump($arr);
    
    echo "days excluding sat-sundays " . count($arr);
    

    https://3v4l.org/pPLpb

    编辑添加 = 以计算结束日期。
    编辑;我以前的 strtotime 出现了一些问题,它给出了正确的结果,但将星期二算作星期一。
    改为 $i*86400 并在数组中添加更多数据以进行调试。

    【讨论】:

    • 如果第二个日期是2017-08-07,它应该给2,但它给1
    • @Vivek 我以为这是您在寻找的内容。我在代码中添加了一个 = 来修复它。
    【解决方案3】:

    假期举行周六和周日计数; 不放假保持距离

    <?php
    $datetime1 = new DateTime('2009-10-11');
    $datetime2 = new DateTime('2009-12-13');
    $interval = $datetime1->diff($datetime2);
    $distance=$interval->format('%R%a');
    $hoildays=($distance/7)*2;//  *2 cuz saturday and sunday
    $W=$distance-($distance/$hoildays);
    echo $W;
    ?>
    

    【讨论】:

    • 此代码不起作用。它仅假设每 7 天有 2 个周六周日。如果搜索时间少于 7 天或仅包含一个周末,则搜索失败。 3v4l.org/VCpIk
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    相关资源
    最近更新 更多