Index: src/wp-includes/formatting.php
===================================================================
--- src/wp-includes/formatting.php	(revision 35235)
+++ src/wp-includes/formatting.php	(working copy)
@@ -611,7 +611,7 @@
 			. ')*+'         // Loop possessively.
 			. '(?:]]>)?';   // End of comment. If not found, match all input.
 
-		$escaped = 
+		$escaped =
 			  '(?='           // Is the element escaped?
 			.    '!--'
 			. '|'
@@ -2560,6 +2560,7 @@
 	return chr( hexdec( strtolower( $match[1] ) ) );
 }
 
+
 /**
  * Returns a date in the GMT equivalent.
  *
@@ -2572,6 +2573,7 @@
  *
  * @param string $string The date to be converted.
  * @param string $format The format string for the returned date (default is Y-m-d H:i:s)
+ *
  * @return string GMT version of the date provided.
  */
 function get_gmt_from_date( $string, $format = 'Y-m-d H:i:s' ) {
@@ -2578,16 +2580,24 @@
 	$tz = get_option( 'timezone_string' );
 	if ( $tz ) {
 		$datetime = date_create( $string, new DateTimeZone( $tz ) );
-		if ( ! $datetime )
+		if ( ! $datetime ) {
 			return gmdate( $format, 0 );
+		}
 		$datetime->setTimezone( new DateTimeZone( 'UTC' ) );
 		$string_gmt = $datetime->format( $format );
 	} else {
-		if ( ! preg_match( '#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches ) )
-			return gmdate( $format, 0 );
+		if ( ! preg_match( '#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches ) ) {
+			$datetime = strtotime( $string );
+			if ( false === $datetime ) {
+				return gmdate( $format, 0 );
+			}
+
+			return gmdate( $format, $datetime );
+		}
 		$string_time = gmmktime( $matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1] );
-		$string_gmt = gmdate( $format, $string_time - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
+		$string_gmt  = gmdate( $format, $string_time - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
 	}
+
 	return $string_gmt;
 }
 
Index: tests/phpunit/tests/formatting/date.php
===================================================================
--- tests/phpunit/tests/formatting/date.php	(revision 35235)
+++ tests/phpunit/tests/formatting/date.php	(working copy)
@@ -44,7 +44,57 @@
 	function test_get_gmt_from_date_during_dst() {
 		update_option( 'timezone_string', 'Europe/London' );
 		$local = '2012-06-01 12:34:56';
-		$gmt = '2012-06-01 11:34:56';
+		$gmt   = '2012-06-01 11:34:56';
 		$this->assertEquals( $gmt, get_gmt_from_date( $local ) );
 	}
+
+	/**
+	 * @ticket 34279
+	 */
+	function test_get_date_and_time_from_gmt_no_timezone() {
+		$gmt = $local = '2012-01-01 12:34:56';
+		$this->assertEquals( $gmt, get_date_from_gmt( $local ) );
+	}
+
+	/**
+	 * @ticket 34279
+	 */
+	function test_get_gmt_from_date_no_timezone() {
+		$gmt  = '2012-12-01 00:00:00';
+		$date = '2012-12-01';
+		$this->assertEquals( $gmt, get_gmt_from_date( $date ) );
+	}
+
+
+	/**
+	 *
+	 * @ticket 34279
+	 */
+	function test_get_gmt_from_date_short_date() {
+		update_option( 'timezone_string', 'Europe/London' );
+		$local = '2012-12-01';
+		$gmt = '2012-12-01 00:00:00';
+		$this->assertEquals( $gmt, get_gmt_from_date( $local ) );
+	}
+
+	/**
+	 *
+	 * @ticket 34279
+	 */
+	function test_get_gmt_from_date_string_date() {
+		update_option( 'timezone_string', 'Europe/London' );
+		$local = 'now';
+		$gmt = gmdate( 'Y-m-d H:i:s', strtotime( 'now' ) );
+		$this->assertEquals( $gmt, get_gmt_from_date( $local ) );
+	}
+
+	/**
+	*
+	* @ticket 34279
+	*/
+	function test_get_gmt_from_date_string_date_no_timezone() {
+		$local = 'now';
+		$gmt = gmdate( 'Y-m-d H:i:s', strtotime( 'now' ) );
+		$this->assertEquals( $gmt, get_gmt_from_date( $local ) );
+	}
 }
