Did you try this plugin?
http://wordpress.org/extend/plugins/scheduled-post-delete/
////
Sorry for my mistake, I understood you wrong. Try by pasting this in your functions.php:
function auto_cat_remove() {
global $post;
wp_schedule_single_event( time() + 604800, 'remove_news_cat_event', array( $post->ID ) );
}
function remove_news_cat_func( $post_id ) {
global $wpdb;
$category_id = get_cat_ID( 'news' );
$wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id = %d", $post_id, $category_id ) );
}
add_action( 'publish_post', 'auto_cat_remove' );
add_action( 'remove_news_cat_event', 'remove_news_cat_func' );
What this will do is basically schedule event seven days after the post creation. On 7th day, remove_news_cat_func function will run that will remove “news” category from the list of categories assigned to that post.
If you want to test it, you can change 604800 in wp_schedule_single_event to something like 30 and if you do that, 30 seconds after post creation category should be gone.
Note that this function relies on WP-Cron so to fire it, someone actually has to visit the site (this might cause delay with short span of 30 seconds but with days you are fine).