I had the exact same need, so I wrote this function - which works. Modify it to your needs. Hope this helps.
// set daily rating title
function set_rating_title ($post_id) {
if ( $post_id == null || empty($_POST) )
return;
if ( !isset( $_POST['post_type'] ) || $_POST['post_type']!='rating' )
return;
if ( wp_is_post_revision( $post_id ) )
$post_id = wp_is_post_revision( $post_id );
global $post;
if ( empty( $post ) )
$post = get_post($post_id);
if ($_POST['rating_date']!='') {
global $wpdb;
$date = date('l, d.m.Y', strtotime($_POST['rating_date']));
$title = 'TV ratings for ' . $date;
$where = array( 'ID' => $post_id );
$wpdb->update( $wpdb->posts, array( 'post_title' => $title ), $where );
}
}
add_action('save_post', 'set_rating_title', 12 );
register_post_type()call. – Chip Bennett Nov 21 '12 at 18:54