I am not sure why you prefer the longer method over wp_get_archives(). I recommend letting Wordpress do the work for you. It is more efficient, and easier to read.
However ... since you presented a particular preference:
It would appear that you are using an array for post_type, when none is required. Try modifying your WP_Query args to:
$terms_year = ...
Publish date - The date on which a post or page is created/Published
Modified_date - The date of the post with recent modification
If you are presenting only one "News date", you can use modified_date because news are always updating. The the users can easily understand.