【问题标题】:How to get closest date by day of week?如何按星期几获得最近的日期?
【发布时间】:2019-03-01 02:53:59
【问题描述】:

我有从 1 到 7(周一到周日)的工作日。

我想获取下一个日期,其中日期是指定的日期(从 1 到 7)。

例如,今天是 25.09.2018。

当我超过 5(星期五)时,我想得到 28.09.2018,这是下一个最近的星期五。

我怎样才能实现它?提前致谢!

【问题讨论】:

标签: php laravel date


【解决方案1】:

这是您可以在任何地方使用的自定义通用函数,

function getNextDate($date, $number)
{
    $numericDay = (($number - 1) <= 0 ? 0 : $number - 1);
    $day        = jddayofweek($numericDay, 1);
    echo date('d.m.Y', strtotime("next " . $day . "", strtotime($date)));
}
getNextDate("25.09.2018", 5);

这个函数你也可以用作泛型函数。

您将清楚地了解jddayofweek

我将 1 作为返回字符串传递,其中包含星期几(英文-公历)。

我减去了 1,因为默认情况下星期一被视为第一个索引。

【讨论】:

    【解决方案2】:

    星期五的例子(5)

    Carbon::now()
        ->next(5)
        ->toDateString();
    

    More about Carbon library

    【讨论】:

      【解决方案3】:

      strtotime()

      `strtotime('next tuesday');`
      

      你可能会发现使用strtotime:

      echo date("jS F, Y", strtotime('next friday'));

      【讨论】:

        【解决方案4】:

        使用strtotime,您可以像这样strtotime('next friday') 获得下一个星期五

        所以在 PHP 中这样的东西可能会起作用:

        date('d.m.Y', strtotime("next friday"))
        

        【讨论】:

          【解决方案5】:
          • 查找给定日期的星期几号
          • 计算要添加的天数。首先,找到到达周末的天数(7 - 当前工作日数)。然后,添加给定的输入。
          • 使用datestrtotime 函数,获取结果日期。

          尝试以下(代码 cmets 中的解释):

          // Get weekday number for current date (or, you can use any other given date)
          $start_date = time();
          $weekday = (int)date('w', $start_date);
          
          // assuming $input eg: 5 (Friday)
          // calculating the differential we need to add 
          $diff = (7 - $weekday) + $input;
          
          $new_date = date(strtotime($start_date . "+" . $diff . " day"));
          

          【讨论】:

            【解决方案6】:

            不使用碳

            $date = new \DateTimeImmutable();
            
            $nextFriday = $date->sub(new \DateInterval("P".$date->format("w")."D"))->add(new \DateInterval("P5D"));
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-06-29
              • 1970-01-01
              • 2015-10-17
              • 2015-03-29
              • 1970-01-01
              • 1970-01-01
              • 2022-11-09
              • 2022-01-08
              相关资源
              最近更新 更多