The function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp (the number of seconds since January 1 1970 UTC), relative to the timestamp given in is not supplied.
Each parameter of this function uses the default time zone unless a time zone is specified in that parameter.
This has been corrected in 5.2.7 and later versions.
Note: If the number of the year is specified in a two digit format, the values between 00-69 are mapped to 2000-2069 and 70-99 to 1970-1999.
See the notes below for possible differences on 32bit systems (possible dates might end on 2038-01-19 ).
Note: The valid range of a timestamp is typically from Fri, UTC to Tue, UTC.
(These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer.) Prior to PHP 5.1.0, not all platforms support negative timestamps, therefore your date range may be limited to no earlier than the Unix epoch. dates prior to Jan 1, 1970 will not work on Windows, some Linux distributions, and a few other operating systems.
For 64-bit versions of PHP, the valid range of a timestamp is effectively infinite, as 64 bits can represent approximately 293 billion years in either direction.
I've had a little trouble with this function in the past because (as some people have pointed out) you can't really set a locale for strtotime.
If you're American, you see 11/12/10 and think "12 November, 2010".
If you're Australian (or European), you think it's 11 December, 2010.
If you're a sysadmin who reads in ISO, it looks like 10th December 2011.
The best way to compensate for this is by modifying your joining characters. Observe: WARNING when using "next month", "last month", "+1 month", "-1 month" or any combination of +/-X months.