Lets take a look at this very basic loop.
<?php
$query_name = new WP_Query();
if ( $query_name->have_posts() ) :
while ($query_name->have_posts()): $query_name->the_post();
the_date();
the_title();
the_content();
endwhile;
endif;
Nothing special right? Will by default just display the date, title and content of the first 10 posts.
But if 2 posts are published on the same day it will skip display that posts date.
When looking at the source code of the_date it compares the date of the previous post with the current using is_new_day.
I guess it can make sense in some scenario’s but too me it’s a bit weird by default.
To prevent this just use
<?php
echo get_the_date();