Displaying year once in category.php [duplicate]

Create your query for the category, and order by date

$q = new WP_Query('category_name=acategory&orderby=date&order=DESC');

After that, while looping posts, save the year in a helper variable, shoing it only when changed:

$year = 0;

if ( $q->have_posts() ) : while ( $q->have_posts() ) : $q->the_post();

  $post_year = (int) get_the_time('Y');

  if ( $post_year !== (int) $year ) {
     echo '<h2>' . $post_year . '</h2>';
     $year = $post_year;
  }

  // the loop

  echo '<p><a href="' . get_permalink() . '">' . get_the_title() . '</a></p>';

endwhile;
endif;
wp_reset_postdata();
unset($year, $post_year);