Just set a flag to check for a new value, and only display the date if the new value does not match the flag, like so:
<?php
$args = array(
'post_type' => 'tv-schedule',
'posts_per_page' => -1,
'orderby' => 'date',
'order' => 'ASC',
'post_status' => array('publish', 'future'),
);
$posts_array = query_posts($args);
$flag = ''; // set an initial value that won't match the first date
foreach ($posts_array as $post_array) {
$date = $post_array->post_date_gmt;
$new_date = date ('Y-m-01', strtotime($date) );
if($new_date != $flag) {
echo $new_date . '<br />';
$flag = $new_date; // $flag only changes when we actually display a new date
}
/*
if(!in_array($new_date, $post_array->post_date_gmt)){
//$a[]=$value;
echo "test";
}
*/
}
UPDATE
Changed !== to != so that it would work.