php strtotime “last monday” if today is monday?

后端 未结 8 1653
攒了一身酷
攒了一身酷 2020-11-30 03:45

I want to use strtotime(\"last Monday\").

The thing is, if today IS MONDAY, what does it return? It seems to be returning the date for the monday of la

相关标签:
8条回答
  • 2020-11-30 04:28

    If you read the manual, there is an great example that describes exactly what you want to do http://www.php.net/manual/en/datetime.formats.relative.php

    strtotime('Monday this week');
    

    Update: There appears to be a bug introduced in newer versions of PHP where this week returns the wrong week when ran on Sundays. You can vote on the bug here: https://bugs.php.net/bug.php?id=63740

    Update 2: As of May 18th 2016, this has been fixed in PHP 5.6.22, PHP 7.0.7 and PHP 7.1-dev (and hopefully remains fixed in subsequent releases) as seen here: https://bugs.php.net/bug.php?id=63740#1463570467

    0 讨论(0)
  • 2020-11-30 04:30

    My aproach:

    date_default_timezone_set('Europe/Berlin');
    function givedate($weekday, $time) {
    $now = time();
    $last = strtotime("$weekday this week $time");
    $next = strtotime("next $weekday $time");
        if($now > $last) {
            $date = date("d.m.Y - H:i",$next);
        }
        else {
            $date = date("d.m.Y - H:i",$last);
        }
        return $date;
    }
    
    echo givedate('Wednesday', '00:52');
    

    Or monthly

        function givedate_monthly($weekday, $time) {
        $now = time();
        $last = strtotime("first $weekday of this month $time");
        $next = strtotime("first $weekday of next month $time");
            if($now > $last) {
                $date = date("d.m.Y - H:i",$next);
            }
            else {
                $date = date("d.m.Y - H:i",$last);
            }
            return $date;
    }
    
    echo givedate_monthly('Wednesday', '01:50');
    
    0 讨论(0)
提交回复
热议问题