PHP is confused by the time format you are handing over.
new DateTime("2014-12-01 16:00:02,153"); // fails
strtotime("2014-12-01 16:00:02,153"); // fails
This is because of the unexpected part with the comma at the end. Where are you getting this strange timestamp with comma seperated milliseconds from? It is unusual.
As you are asking for datetime which usually does not need any milliseconds you can do the following:
$timeparts = explode(",","2014-12-01 16:00:02,153");
Carbon::parse($timeparts[0]); // should work
$timeparts[1] is the milliseconds then.
If you want to be more precise you can round the milliseconds:
if(intval($timeparts[1]) >= 500) {
// time +1 second
}
... or you treat the milliseconds seperatly if you need em. Add them to the generated timestamp later and check the docs of Carbon.