Obtaining values from objects

The problem with your use of foreach (in both cases) is that you are erasing any previous value $Comments or $CommentDates had before the current iteration. Rather than setting the value to the variable itself, perhaps you should be appending new values onto the variable as an array:

// Not sure what purpose your $cake and $element serve here )
foreach( $children as $cake => $element ) {
  $args = array( 'post_id' => $ID ); // Assuming this $ID is declared elsewhere
  $comments[] = get_comments( $args );
}

foreach( $comments as $commentObject ) {
  $commentDates[] = $commentObject->comment_date;
}

Of course, these two foreach statements could be blended into one single foreach unless details not specified in your question would prevent that.

This would result in two arrays: $comments containing all of the results from each iterative call to get_comments(), and $commentsDates containing the iterative results to each $commentObject on its comment_date property.