I’ve done something in the past using custom fields. Maybe this can get you going in the right direction? This is done directly after the <?php while ( have_posts() ) : the_post(); ?>
<?php
$currentdate = date("Ymd");
$expirationdate = genesis_get_custom_field('_racedate');
$expirestring = str_replace("-","",$expirationdate);
if (is_null($expirationdate)) {
$expirestring = '30005050'; //MAKE UN-EXPIRING POSTS ALWAYS SHOW UP;
} else {
if (is_array($expirationdate)) {
$expirestringarray = implode($expirationdate);
}
} //else
if ( $expirestring + 1 > $currentdate ): ?>
This will actually show up everything that has been posted (in my case, future races) and a day after the “racedate”, the post would disappear from the loop (it still remains in the dashboard).