Ok, so it looks like you’re having a problem with the publish time being a unix timestamp, but your current time is not, it’s just returning the hours.
$publish_time = get_the_time('U'); // Returns our $publish time as a Unix timestamp
$delete_time = $publish_time + 43200; // 60 sec * 60 min * 12 hrs = 43,200 sec
$current_time = time(); // time is a the current time in a Unix timestamp
if ( $current_time >= $delete_time ) {
wp_delete_post(get_the_ID(), true);
}