Reputation: 56650
I really like the PHP function strtotime(), but the user manual doesn't give a complete description of the supported date formats. It only gives a few examples like "10 September 2000", "+1 week 2 days 4 hours 2 seconds", and "next Thursday".
Where can I find a complete description?
Upvotes: 4
Views: 9534
Reputation: 56650
I can't find anything official, but I saw a tutorial that says strtotime() uses GNU Date Input Formats. Those are described in detail in the GNU manual.
One discrepancy I notice is that "next" doesn't match the behaviour described in the GNU manual. Using strtotime(), "next Thursday" will give you the same result as "Thursday", unless today is a Thursday.
If today is a Thursday, then
If today is not a Thursday, then
I'm using PHP 5.2.6.
Update:
I guess the user manual has been updated since I posted this, or else I was blind. It now contains a link to the Date and Time Formats chapter, that includes a section on relative formats.
Upvotes: 7
Reputation: 4219
You can start to trace what it is doing by looking at the following C code:
http://cvs.php.net/viewvc.cgi/php-src/ext/date/php_date.c
Search for PHP_FUNCTION(strtotime)
Also this is the main regex parsing:
http://cvs.php.net/viewvc.cgi/php-src/ext/date/lib/parse_date.re
Good luck
Upvotes: 1
Reputation: 2340
Basically anything that date can create strtotime will parse. With one exception, it does have issues with non-US style formatting. So keep it Month-Day-Year type formatting in place.
Upvotes: 0
Reputation: 17
In my experience strtotime() can accept anything that even remotely looks like a date. The best way to figure out its boundaries are is to create a test script and plug in values and see what does and doesn't work.
$input = "Apr 10th";
print(date('Y-m-d', strtotime($input)));
Just keep changing the $input variable and observe the results.
Upvotes: 0