Index: wp-includes/formatting.php
===================================================================
--- wp-includes/formatting.php	(revision 17420)
+++ wp-includes/formatting.php	(working copy)
@@ -1678,10 +1678,11 @@
  */
 function iso8601_to_datetime($date_string, $timezone = 'user') {
 	$timezone = strtolower($timezone);
+	$regex = '#([0-9]{4})-?([0-9]{2})-?([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:\.\d+)(Z|[\+|\-][0-9]{2,4}){0,1}#';
 
 	if ($timezone == 'gmt') {
 
-		preg_match('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', $date_string, $date_bits);
+		preg_match($regex, $date_string, $date_bits);
 
 		if (!empty($date_bits[7])) { // we have a timezone, so let's compute an offset
 			$offset = iso8601_timezone_to_offset($date_bits[7]);
@@ -1695,7 +1696,7 @@
 		return gmdate('Y-m-d H:i:s', $timestamp);
 
 	} else if ($timezone == 'user') {
-		return preg_replace('#([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(Z|[\+|\-][0-9]{2,4}){0,1}#', '$1-$2-$3 $4:$5:$6', $date_string);
+		return preg_replace($regex, '$1-$2-$3 $4:$5:$6', $date_string);
 	}
 }
 
