php - How to use date and time ACF fields to hide the_content() based on whether time has passed

one text

I am using ACF fields which hold the closing date and closing time. I have the following variables:

$closing_date = get_field( "closing_date" );
$closing_time = get_field( "closing_time" );

$cdate = $closing_date ." " . $closing_time; 
date_default_timezone_set('Africa/Nairobi');
$date2 = new DateTime("$cdate");

Now I need to hide content if time has passed. The code works well outside a function such as:

if(new DateTime() > $date2)
{?>
<span class="" style="color:white; background:grey; padding:2px; border-radius:2px;"> 
<?php echo "Closed"; ?></span>
<?php
}

But inside the function it won't work despite declaring the global variables

add_filter('the_content', 'hide_post_contents');

function hide_post_contents( $content ) {
   global $date2;
   if (new DateTime() > $date2) {
        return '<h3>This content is not available </h3>
        <p>Please feel free to check out other content.</p>';
    }
    return $content;
}

However when I add the date manually as below, it works.

add_filter('the_content', 'hide_post_contents');

function hide_post_contents( $content ) {
   if (new DateTime() > new DateTime("09-03-2021 15:00")) {
        return '<h3>This content is not available </h3>
        <p>Please feel free to check out other content.</p>';
    }
    return $content;
}

Content still displays even when time has passed which is wrong. Cannot get it to work despite several attempts.

Source