【问题标题】:php date next week according to today根据今天的下周php日期
【发布时间】:2013-02-04 07:59:57
【问题描述】:

我想在下周显示,如果它在星期四 13:00 之后它应该返回 +2 周(下周之后的一周)。如果不是周末,此代码可以正常工作。它在星期五之后给出错误的开始日期。这是什么原因造成的?

$current_time = strtotime('now');

if ($current_time < strtotime('thursday this week 13:00')) {
    $week_start = date('d/m/Y', strtotime('this week next monday', strtotime(date('d-m-Y'))));
    $week_end = date('d/m/Y', strtotime('next week next sunday', strtotime(date('d-m-Y'))));
} else {
    if (date('N') > 5) {
        $week_start = date('d/m/Y', strtotime('+2 week next monday', strtotime(date('d-m-Y'))));
    } else {
        $week_start = date('d/m/Y', strtotime('next week next monday', strtotime(date('d-m-Y'))));
    }

    $week_end = date('d/m/Y', strtotime('+2 week next sunday', strtotime(date('d-m-Y')))); 
} 

return $week_start." - ".$week_end;

【问题讨论】:

    标签: php date


    【解决方案1】:

    您的 if 语句有 3 个分支,即使您说您只测试日期是否在星期四 13:00 之前或之后。

    似乎+2 week next monday 应该是next week next monday,而 读取next week next monday 的行可能永远不会执行。

    代码也可以这样简化:

    if ($current_time < strtotime('thursday this week 13:00')){
        $week_start = strtotime('monday next week');
    }else{
        $week_start = strtotime('monday +1 week');
    }
    
    $week_end = strtotime('next sunday', $week_start);
    
    return date("Y/m/d", $week_start)." - ".date("Y/m/d", $week_end); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      相关资源
      最近更新 更多