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

时间:2017-01-07 13:54:12

标签: php date

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

  • Mon-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,因为这是星期一的下一个日期。

  • 周一至周日|星期二03 | Wed-04 |星期四05 |周六06 |周六07 |太阳-08

我想保留最后几天的日期,以便列表不会更改。

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

1 个答案:

答案 0 :(得分: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); 
}