【问题标题】:strtotime PHP for date numerical value + 1 weekstrtotime PHP 用于日期数值 + 1 周
【发布时间】:2012-11-13 19:08:42
【问题描述】:

我有一个从 1 到 7 的日期值,其中 1 是星期一,7 是星期日。

我需要获得下周适当日期的 strtotime 值。

例如:今天是 11 月 13 日星期二。

我的日期值为“2”,因此 strtotime 应返回 11 月 20 日星期二的适当值。 我的日期值为“1”,因此 strtotime 应返回 11 月 19 日星期一的适当值。 我的日期值为“5”,因此 strtotime 应返回 11 月 23 日星期五的适当值。

我希望这可以通过几个内置的 PHP 函数 (strtotime(+1week+something)) 来完成? 如果没有,我将尝试编写一些比较检查!

谢谢!

【问题讨论】:

    标签: php strtotime


    【解决方案1】:
    function dayNextWeek($num) {
      return date('Y-m-d', strtotime("+1 week +" . ($num - date('w'))  . "days"));
    }
    

    然后进行测试:

    foreach (range(1, 7) as $i) {
      echo $i . ' ' . dayNextWeek($i) . "\n";
    }
    

    输出

    1 2012-11-19
    2 2012-11-20
    3 2012-11-21
    4 2012-11-22
    5 2012-11-23
    6 2012-11-24
    7 2012-11-25
    

    【讨论】:

    • 这太完美了,谢谢! (知道这可以通过 +1 周 + 完成!)
    【解决方案2】:

    未经广泛测试:

    $givenDayNumber = 1;             // Your value here
    $date = new DateTime();          // Today (reference point)
    $currentDayOfWeek = date('N');   // This is 1 = Monday, see php date manual for more options
    $diff = $givenDayNumber- $currentDayOfWeek; // Difference between given number and todays number
    $date->modify('+ '.$diff.' day'); // Subtract difference
    $date->modify('+ 1 week');        // Add a week
    echo $date->format('d/m/Y');      // Output
    

    在这里摆弄键盘:http://codepad.org/7SylbJOX

    【讨论】:

      【解决方案3】:
      function getNext($dow)
      {
          $now = intval(date('N'));
      
          $toAdd = $dow - $now;
          if($toAdd<=0)
          {
              $toAdd += 7;
          }
      
          return date('r', strtotime('+'.$toAdd.'day'));
      }
      

      【讨论】:

        【解决方案4】:

        希望这对你有用。

        <?php
        $array = array('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
        $your_value = 2;
        $str = 'next ' . $array[$your_value -1];
        echo date('D d M Y', strtotime($str));
        
        ?>
        

        http://codepad.org/OIrzRxpl

        【讨论】:

          【解决方案5】:

          试试:

           $day_nxt_week = date('N', strtotime(date('Ymd') . '+1 week'));
           print_r($day_nxt_week);
          

          Demo

          【讨论】:

          • 感谢您的回复。这只是返回“2”,而不是基于偏移量的 strtotime 值?谢谢!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-19
          • 1970-01-01
          • 1970-01-01
          • 2012-11-19
          相关资源
          最近更新 更多