使用PHP相对时间格式将周开始从Sun更改为Mon

时间:2014-05-11 11:23:12

标签: php

我在PHP中使用strtotime()和相对时间格式的函数应该返回一周的第一天但它会自动设置为星期日而不是星期一。有没有办法改变这个?

function start_of_week() {
    $monday = strtotime('monday this week');    
    return date("Y-m-d", $monday);
}

例如今天是星期日11日,上面的函数将返回明天的星期日 next

3 个答案:

答案 0 :(得分:1)

我认为这对你有用。

function start_of_week()
{
    $monday = strtotime('monday this week');

    $today_day = date('D');

    if($today_day != "Mon")
        $start_of_week = date('Y-m-d', strtotime("last monday"));
    else
        $start_of_week = date("Y-m-d", $monday);

    return $start_of_week ;
}

答案 1 :(得分:1)

我尝试了下一步,一切都很好:

$monday1 = strtotime("monday this week");
$monday2 = strtotime("next monday");
$monday3 = strtotime("monday next week");    
echo '<br>'.date("Y-m-d", $monday1); // output : 2014-05-12
echo '<br>'.date("Y-m-d", $monday2); // output : 2014-05-12
echo '<br>'.date("Y-m-d", $monday3); // output : 2014-05-19

那么,你的问题在哪里?

答案 2 :(得分:0)

我认为这就是你需要的,如果你愿意,可以改变这个参数startFrom初始化为星期一,但我认为你可能需要稍后使用默认的开始日来调用此函数。 而是调用start_of_week(2)将星期二设置为一周中的第一天,因此您现在需要使用start_of_week(7)

function start_of_week($startFrom=1) {
    $dateTime =new DateTime(); // today
    $diff = ($startFrom - $dateTime->format('N'));
    if ($diff > 0) { $diff -= 7; }
    $dateTime->modify("$diff days");
    return $dateTime->format('Y-m-d');
    }
    echo start_of_week(7);