Update: Wes Baker posted, that there are "official solutions".
In ..../system/expressionengine/libraries/Localize.php around line 283 remove the following block of code:
if ( ! empty($date_string) &&
! is_numeric($date_string) &&
@strtotime($date_string) === FALSE)
{
return FALSE;
}
And:
Open system/expressionengine/fieldtypes/date/ft.date.php and find this block of code around line 100 and remove it:
if (preg_match(’/\d{1,2}-\d{1,2}-\d{2}\b/’, $data))
{
return lang(‘invalid_date_ambiguous’);
}
Now, open up system/expressionengine/libraries/Localize.php and find the _datetime() function around line 289 and add this to the top of the function:
// Checking for ambiguous dates but only when we don't have a date
// format.
if ( ! $date_format)
{
if (preg_match('/\b\d{1,2}-\d{1,2}-\d{2}\b/', $date_string))
{
return FALSE;
}
}
//
Original Answer:
Two changes seems to fix it in cp, PHP 5.4:
/system/expressionengine/fieldtypes/date/ft.date.php
In function validate, delete lines 100–103:
if (preg_match(’/\d{1,2}-\d{1,2}-\d{2}\b/’, $data))
{
return lang(‘invalid_date_ambiguous’);
}
/system/expressionengine/libraries/Localize.php
In function _datetime, delete the “Fix for some versions of PHP 5.2 ...”, lines 283–290:
if ( ! empty($date_string) &&
! is_numeric($date_string) &&
@strtotime($date_string) === FALSE)
{
return FALSE;
}