Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 21921)
+++ wp-includes/post.php	(working copy)
@@ -2637,9 +2637,12 @@
 		$mm = substr( $post_date, 5, 2 );
 		$jj = substr( $post_date, 8, 2 );
 		$aa = substr( $post_date, 0, 4 );
-		$valid_date = apply_filters( 'wp_insert_post_validate_date', checkdate( $mm, $jj, $aa ), $post_date );
+		$valid_date = wp_checkdate( $mm, $jj, $aa, $post_date );
 		if ( !$valid_date ) {
-			return new WP_Error( 'invalid_date', __( 'Woops, the provided date is invalid.' ) );
+			if ( $wp_error )
+				return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) );
+			else
+				return 0;
 		}
 
 	if ( empty($post_date_gmt) || '0000-00-00 00:00:00' == $post_date_gmt ) {
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 21920)
+++ wp-includes/functions.php	(working copy)
@@ -3703,3 +3703,13 @@
 	return true;
 }
 
+/**
+ * Test if the supplied date is valid for the Gregorian calendar
+ *
+ * @since 3.5.0
+ *
+ * @return bool true|false
+ */
+function wp_checkdate( $month, $day, $year, $source_date ) {
+	return apply_filters( 'wp_checkdate', checkdate( $month, $day, $year ), $source_date );
+}
\ No newline at end of file
Index: wp-admin/includes/post.php
===================================================================
--- wp-admin/includes/post.php	(revision 21921)
+++ wp-admin/includes/post.php	(working copy)
@@ -122,11 +122,11 @@
 		$hh = ($hh > 23 ) ? $hh -24 : $hh;
 		$mn = ($mn > 59 ) ? $mn -60 : $mn;
 		$ss = ($ss > 59 ) ? $ss -60 : $ss;
-		$valid_date = apply_filters( '_wp_translate_postdata_valid_date', checkdate( $mm, $jj, $aa ), $post_data );
+		$post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );
+		$valid_date = wp_checkdate( $mm, $jj, $aa, $post_data['post_date'] );
 		if ( !$valid_date ) {
-			return new WP_Error( 'invalid_date', __( 'Woops, the provided date is invalid.' ) );
+			return new WP_Error( 'invalid_date', __( 'Whoops, the provided date is invalid.' ) );
 		}
-		$post_data['post_date'] = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $aa, $mm, $jj, $hh, $mn, $ss );
 		$post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
 	}
 
