本周的PHP工作日,为什么下周会有date()和strtotime?

时间:2012-08-01 09:26:24

标签: php date strtotime

我使用以下代码获取工作日的Y-m-d格式:

$monday = date('Y-m-d', strtotime('Monday'));
$tuesday = date('Y-m-d', strtotime('Tuesday'));
$wednesday = date('Y-m-d', strtotime('Wednesday'));
$thursday = date('Y-m-d', strtotime('Thursday'));
$friday = date('Y-m-d', strtotime('Friday'));

今天是2012-08-01(第31周),我需要的星期一价值应该是2012-07-30。

为什么strtotime('Monday')下周一会成功呢?

3 个答案:

答案 0 :(得分:8)

因为date('Y-m-d')返回今天的日期,即八月份。您正在将monday转换为time。现在时间用date(Y-m-d)(2012年8月)表示。所以明显的答案是从今天开始的下一个星期一。

为了获得上周的日期,请使用

$monday=date(Y-m-d,strtotime('monday this week'))

答案 1 :(得分:1)

它总是返回第二天的类型。下周一是08-06,下周四是08-02。

<?php
  function getDateOfWeekDay($day) {
    $weekDays = array(
      'Sunday',
      'Monday',
      'Tuesday',
      'Wednesday',
      'Thursday',
      'Friday',
      'Saturday',
    );

    $dayNumber = array_search($day, $weekDays);
    $currentDayNumber =  date('w', strtotime('today'));

    if ($dayNumber > $currentDayNumber) {
      return date('Y-m-d', strtotime($day));
    } else {
      return date('Y-m-d', strtotime($day) - 604800);
    }
  }

  echo  getDateOfWeekDay('Monday');
?>

答案 2 :(得分:1)

对于我的应用程序,我只需要为当周的日期创建变量。

这就是我接受这段代码的原因:

$mon_value= date('Y-m-d', strtotime('Monday this week'));
$tue_value= date('Y-m-d', strtotime('Tuesday this week'));
$wed_value= date('Y-m-d', strtotime('Wednesday this week'));
$thu_value= date('Y-m-d', strtotime('Thursday this week'));
$fri_value= date('Y-m-d', strtotime('Friday this week'));