PHP - Give Error on Convert a 12Hour Format Time to a new timezone
===

I get the Error **sometime** on Converting 12hour format time from a Timezone to new 
TimeZone  

***Error:***   

	Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct(): Failed to parse time string (10:39:6 AM) at position 8 (A):
	The timezone could not be found in the database' in C:\xampp\php\socket_udp.php:95
	Stack trace:
	#0 C:\xampp\php\socket_udp.php(95): DateTime->__construct('10:39:6 AM', Object(DateTimeZone))#1 {main}

***MyCodes:***

	// $gps_time = "9:43:52"; 
	$gps_time      = $time_hour.":".$time_min.":".$time_sec;
	// $time_received = "01:45:04 2012-07-28"; 
	$time_received = date('H:i:s Y-m-d');

	$utc = new DateTimeZone("UTC"); 
	$moscow = new DateTimeZone("Asia/Tehran"); 

	//Instantiate both AM and PM versions of your time 
	$gps_time_am = new DateTime("$gps_time AM", $utc); 
	$gps_time_pm = new DateTime("$gps_time PM", $utc); 

	//Received time 
	$time_received = new DateTime($time_received, $moscow); 

	//Change timezone to Moscow 
	$gps_time_am->setTimezone($moscow); 
	$gps_time_pm->setTimezone($moscow); 

	//Check the difference in hours. If it's less than 1 hour difference, it's the correct one. 
	if ($time_received->diff($gps_time_pm)->h < 1) { 

	$correct_time = $gps_time_pm->format("H:i:s Y-m-d");
	} 
	else { 

	$correct_time = $gps_time_am->format("H:i:s Y-m-d");
	}

	echo $correct_time;

***Question:*** Where's the problem !!?   
P.S: above Code is a part of my udp socket and run from php cli