如何以 php 格式获取每月的开始/结束星期一


How-to get the start/end Mondays of the month in php

我还需要包括前一个月的最后一个星期一和下个月的第一个星期一。

2016-01-25
2016-02-01
2016-02-08
2016-02-15
2016-02-22
2016-02-29
2016-03-07

到目前为止,我有这段代码:

function getAllDaysInAMonth($year, $month, $day = 'Monday', $daysError = 3) {
    $dateString = 'first ' . $day . ' of ' . $year . '-' . $month;
    if (!strtotime($dateString)) {
        throw new 'Exception('"' . $dateString . '" is not a valid strtotime');
    }
    $startDay = new 'DateTime($dateString);
    if ($startDay->format('j') > $daysError) {
        $startDay->modify('- 7 days');
    }
    $days = array();
    while ($startDay->format('Y-m') <= $year . '-' . str_pad($month, 2, 0, STR_PAD_LEFT)) {
        $days[] = clone($startDay);
        $startDay->modify('+ 7 days');
    }
    return $days;
}

好的,解决了!

function getAllDaysInAMonth($year, $month, $day = 'Monday', $daysError = 3) {
$dateString = 'first ' . $day . ' of ' . $year . '-' . $month;
if (!strtotime($dateString)) {
    throw new 'Exception('"' . $dateString . '" is not a valid strtotime');
}
$startDay = new 'DateTime($dateString);
if ($startDay->format('j') > $daysError) {
    $startDay->modify('- 7 days');
}
$days = array();
$lastMonday = new DateTime("last Monday of last month");
$nextMonday = new DateTime("first Monday of next month");

$days[] = clone($lastMonday);
while ($startDay->format('Y-m') <= $year . '-' . str_pad($month, 2, 0, STR_PAD_LEFT)) {
    $days[] = clone($startDay);
    $startDay->modify('+ 7 days');
}
$days[] = clone($nextMonday);

return $days;
}

试试这个:

$lastMonday = new DateTime("last Monday of last month");
$nextMonday = new DateTime("first Monday of next month");
echo 'Last Monday : '.$lastMonday->format('Y-m-d').'<br />';
echo 'First Monday : '.$nextMonday->format('Y-m-d');