Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php strtotime "last monday" if today is monday?

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 last week. How can I make it return today's date in that case?

like image 482
Nathan H Avatar asked Nov 11 '10 00:11

Nathan H


People also ask

How can I get last Monday date in PHP?

Just use the date relative format: $date = new DateTime("last monday");

How does Strtotime work in PHP?

The strtotime() function parses an English textual datetime into a Unix timestamp (the number of seconds since January 1 1970 00:00:00 GMT). Note: If the year is specified in a two-digit format, values between 0-69 are mapped to 2000-2069 and values between 70-100 are mapped to 1970-2000.

Why is Strtotime return false?

strtotime expects a "English textual datetime" (according to the manual), which Y-D-M is not. Any time strtotime returns false, it simply doesn't understand your string, which in this application is expected.

What does Strtotime return in PHP?

PHP strtotime() function returns a timestamp value for the given date string. Incase of failure, this function returns the boolean value false.


1 Answers

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

like image 152
jmlnik Avatar answered Sep 23 '22 10:09

jmlnik