Display custom post types by date field

I solved the same problem like this
First you store each posts in another array called $events_by_date with date as the index. If another event post falls in the same date you put that post under the same index.

Please comment if you need further explanation.

  <?php
//setup your wp_query parmeters to make the query

$calendar_results   =   new WP_Query( $wp_query_params );

$events_by_date = array();


     while ( $calendar_results->have_posts() ) : $calendar_results->the_post(); 
        //$date_group =  strtotime($calendar_results->post->post_date);
        $date_group = strtotime(date('Y-m-d',$date_group));
        $events_by_date[$date_group][] = $calendar_results->post;
    endwhile;

global $post;


foreach($events_by_date as $date_heading=>$rows) {

    echo '<h2 class="published-date">',
            ucfirst( strftime( '%A %d %b',$date_heading ) ) ,
    '</h2>';

    foreach ($rows as $post ) {
        setup_postdata($post) ;
        get_template_part( 'content', $template ); 
    }


}   

wp_reset_query();