There are a few ways to go. The ‘traditional’ way I think would be to create a “Page Template“, and on that template use a custom query (WP_Query) to display the posts from the two post types ordered by date. You’d then add a WordPress “Page” in the control panel and choose your new template from the Attributes panel at the left.
This is a sample of how that page template might look:
<?php
/**
* Template Name: News & Announcements Archive
*/
$args = array(
'post_type' => array( 'announcement', 'news' )
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) :
// Start the Loop
while ( $the_query->have_posts() ) : $the_query->the_post();
get_template_part('template-parts/archive-announcement-content', get_post_type());
// End the Loop
endwhile;
else:
// If no posts match this query, output this text.
_e( 'Sorry, no posts matched your criteria.', 'textdomain' );
endif;
wp_reset_postdata();
?>
In newer versions of WordPress, though, you could skip that step and use a Block to display all the posts from those two post types. In future versions of WordPress I think this will be possible via core Blocks, but right now (WP 5.8.2) you’ll have to either build the Block yourself or use a plugin that provides such a block.