【发布时间】:2019-03-01 02:53:59
【问题描述】:
我有从 1 到 7(周一到周日)的工作日。
我想获取下一个日期,其中日期是指定的日期(从 1 到 7)。
例如,今天是 25.09.2018。
当我超过 5(星期五)时,我想得到 28.09.2018,这是下一个最近的星期五。
我怎样才能实现它?提前致谢!
【问题讨论】:
我有从 1 到 7(周一到周日)的工作日。
我想获取下一个日期,其中日期是指定的日期(从 1 到 7)。
例如,今天是 25.09.2018。
当我超过 5(星期五)时,我想得到 28.09.2018,这是下一个最近的星期五。
我怎样才能实现它?提前致谢!
【问题讨论】:
这是您可以在任何地方使用的自定义通用函数,
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,因为默认情况下星期一被视为第一个索引。
【讨论】:
【讨论】:
`strtotime('next tuesday');`
你可能会发现使用strtotime:
echo date("jS F, Y", strtotime('next friday'));
【讨论】:
使用strtotime,您可以像这样strtotime('next friday') 获得下一个星期五
所以在 PHP 中这样的东西可能会起作用:
date('d.m.Y', strtotime("next friday"))
【讨论】:
date 和strtotime 函数,获取结果日期。尝试以下(代码 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"));
【讨论】:
不使用碳
$date = new \DateTimeImmutable();
$nextFriday = $date->sub(new \DateInterval("P".$date->format("w")."D"))->add(new \DateInterval("P5D"));
【讨论】: