在PHP中接下来的下一个星期一

时间:2017-02-15 18:48:40

标签: php date

如何在输入日期后获得第二个星期一? 我有解决方案但不可行

$date = new DateTime();
$date->modify('next monday');
$next_monday = $date->format('Y-m-d');
$date = new DateTime($next_monday);
$date->modify('next monday');
$next_monday = $date->format('Y-m-d');

请告诉我一些方法。

3 个答案:

答案 0 :(得分:2)

您的DateTime对象的modify方法采用与strtotime相同类型的参数。您已使用'next monday',只需使用'second monday'即可。

$date->modify('second monday');
echo $date->format('Y-m-d');

另外,如果您不知道这一点,可以链接一些DateTime方法:

echo $date->modify('second monday')->format('Y-m-d');

答案 1 :(得分:2)

您可以使用strtotime()执行此操作,但如果您认为费用过高,则可以使用dateDateInterval

$date = new DateTime('2017-02-15 13:03:00');
// move back to past Monday
$num = (date("w", $date->getTimestamp())) - 1;
$offset = new DateInterval("P{$num}D");
$offset->invert = 1;
// move forward two weeks
$interval = new DateInterval('P2W');
$next_second_monday = $date->add($offset)->add($interval);

$next_second_monday将是:

DateTime Object
(
    [date] => 2017-02-27 13:03:00.000000
    [timezone_type] => 3
    [timezone] => UTC
)

答案 2 :(得分:0)

可能有另一种方法可以这样做但是使用MomentPHP你可以在今天的一周开始,增加1天(到星期一)然后再增加两周,你会得到第二个下周一。星期一。

<?php
$m = \Moment\moment();
$sunday = $m->startOf('week');
$monday = $sunday->addDays(1);
$2nextMonday = $monday->addWeeks(2);