The_Igel's code is certainly easier to understand (which is a very important thing for code to be!), but his "splitter" function (if it checked the format of the string as well) could be carried out by
list($year, $month, $day) = sscanf($date, '%4d%2d%2d');
Although better code (for some value of "better" - in the sense of "safer", perhaps) that I've just noticed would be
if(sscanf($date, '%4d%2d%2d', &$year, &$month, &$day)!=3)
{ // The match failed - $date misformatted
}