I like Andrew Bartel's suggestion to use get_posts. It has fewer "side effects" than my suggestion to use query_posts.
If you start with this as your foundation:
$args = array('category' => 30, 'numberposts' => 5);
$todayEvents = get_posts($args);
And read up on the time parameters that get_posts/WP_Query uses, you might come up with something like this for today's events:
$today = getdate();
$args = array('category' => 30, 'numberposts' => 5, 'year=' . $today["year"] . '&monthnum=' . $today["mon"] . '&day=' . $today["mday"]);
$todayEvents = get_posts($args);
Start with that and make sure it meets your needs first. Then, go check out the "Return posts from the last 30 days" section of the documentation link I sent you. You'll see an example there that should help you get the Events Passed part figured out.