Dates Expiring By Custom Field date_modify
You could write a fairly simple plugin to automatically set the expiration based off of another field value or calculation.

In your plugin's main file:

public function init() {

    parent::init();

    craft()-&gt;on('entries.saveEntry', function(Event $event) {

        $entry = $event-&gt;params['entry'];

        if ($entry-&gt;section == 'Events') {

            if (empty($entry-&gt;expiryDate)) {
                $date = new DateTime($entry-&gt;dateTime);
                $modifiedDate = date_modify($date, 'tomorrow 5am');
                $entry-&gt;expiryDate = $modifiedDate;
                craft()-&gt;entries-&gt;saveEntry($entry);
            }

        }

    });

}


Updated Code fixed syntax errors and added a check to see if expiration date is already set, otherwise created an endless loop (and may overwrite a manual setting).