首页 文章

php当前工作日的名称与日期

提问于
浏览
-1

我想创建一个工作日日期列表,其中包含工作日的名称 . 如果今天是星期一 - 2017-01-02(Y-m-d),那么我希望列表是这样的:

  • 周一-02 |星期二03 | Wed-04 |星期四05 |周六06 |周六07 |孙-08

如果今天是星期一,我下面的代码会给出这样的结果 . 这就是我到目前为止所拥有的 .

function NextDayDate($day) {
       return new DateTime('next ' . $day);
    }

    $dt = new DateTime();
    $today=date("l");

    if ($today=="Monday") {
      echo $dt->format('d'); // Todays date
      echo '</br>';
    }
    elseif ($today!="Monday"){
        echo '</br>';
      $nextMonday = NextDayDate('Monday');
    echo $nextMonday->format('d'); // Next date
    echo '</br>';
    }
if ($today=="Tuesday") {
      echo $dt->format('d'); // Todays date
      echo '</br>';
    }
    elseif ($today!="Tuesday"){
        echo '</br>';
      $nextMonday = NextDayDate('Tuesday');
    echo $nextMonday->format('d'); // Next date
    echo '</br>';
    }

如果今天是星期二,那么星期一我会有星期一09,因为这是星期一的下一个日期 .

  • 周一-09 |星期二03 | Wed-04 |星期四05 |周六06 |周六07 |孙-08

我想保留最后几天的日期,所以列表不会改变 .

也许有办法让当前的周日名称与日期相符?

1 回答

  • 0

    这更容易:

    $a = new DateTime();
    $oneDay = new DateInterval("P1D");
    // Here you add one day to your date until it will Monday
    while ($a->format('D') != 'Mon') {
      $a->add($oneDay);  
    }
    // Here you print 7 days from your target Monday
    for ($i = 0; $i < 7; $i++) {
      echo $a->format("D-d");   
      $a->add($oneDay); 
    }
    

相关问题