The strtotime function is used to convert a date in various formats to a timestamp. However its behaviour is different based on architecture it is running on, whether 32bit or 64bit.
Lets take a few examples :
In 64 bit environment
desktop:~$ php -a Interactive shell php > echo strtotime("0000-00-00 00:00:00"); -62170005200 php > echo strtotime('1000-01-30'); -30607739600 php > echo strtotime('2100-01-30'); 4104930600 php >
Over here we can see that strtotime is producing timestamps for far dates like 30-01-2100 and 30-01-1000 and even 00-00-0000
whereas on a 32 bit machine it would do this :
echo var_dump(strtotime("0000-00-00 00:00:00")); echo var_dump(strtotime('1000-01-30')); echo var_dump(strtotime('2100-01-30'));
Output :
bool(false) bool(false) bool(false)
So strtotime is not able to handle far away dates on a 32bit machine.
This can have effects in your code. For example if you are checking a date to be valid based on whether strtotime returns false or not :
if(! strtotime($date)) { //error }
Then the above approach would fail when the machine is 64 bit, because strtotime would simply succeed. On 64 bit , the date range for strtotime is quite large compared to that on 32 bit. Therefore an indepth checking of date range is necessary on the more powerful 64bit architecture.