Compare meta key to current date in pre get post

What you’re trying isn’t possible with WP_Query.

The reason is that because you have only stored the duration, it’s not possible to tell whether a post has expired until you know the publication date and the duration time and add them together. That’s what this does:

$expire = get_field( 'status_time_duration' ) + get_the_time( 'U' ); 

That code relies in you already having the status duration and time for the post. When pre_get_posts is run, the posts have not even been queried, as the name suggests, which means you can’t perform that addition.

It might be possible to do the necessary addition and comparison in a raw SQL query, but WP_Query does not provide the capability to do this sort of query.

For these reasons, storing the expiration time as a duration is a poor choice if you intend to query it this way. It would be far easier to store the absolute date and time that the post was set to expire, then a simple meta query could be used to compare that date to the current date:

'meta_query', [
    'relation' => 'OR',
    [
        'key'     => 'status_time_duration',
        'value'   => date( 'U' ),
        'compare' => '<=',
        'type'    => 'NUMERIC',
    ],
    [
        'key'     => 'status_time_duration',
        'compare' => 'NOT EXISTS',
    ],
],

Note that the above code is only an example for if you changed how you stored the expiration time, and won’t work with your current setup.