Why I can’t get old posts instead of recent with WP_Query?

Are you actually using 'after' => date('Y-m-d h:i',time()) in your code? That will always ask for posts older newer that the exact current time when that query is run. Something like this:

'after' => date( 'Y-m-d h:i', time() - 60 * 60 * 24 )

would give you a reference for 24 hours in the past.

The above part is for history’s sake. The solution in this answer is and was right all along though.

As for the results being “backwords” (newest to oldest instead of vice versa) you might want to add an order clause to your snippet (I haven’t tested it):

$my_query = new WP_Query( array(
    'post_type' => 'post',
    'order' => 'ASC',
    'posts_per_page' => 1,
    'date_query' => array(
        array(
            'after' => date( 'Y-m-d h:i', time() ),
        )
    ),
) );

Final edit (tested and working). You need the order clause since WordPress queries posts ‘DESC’ by default. Test the code and see for yourself.