In WordPress, you can easily order posts by one meta value using its orderby meta_value query parameter. But there is no way to order posts by more then one meta value.

To order posts by two or more meta values, you can use a direct sql query. Here’s an example of ordering posts by two meta values,

$query = "SELECT wposts.*, wpostmeta1.*, wpostmeta2.*
FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta1, $wpdb->postmeta wpostmeta2
WHERE wposts.ID = wpostmeta1.post_id
AND wposts.ID = wpostmeta2.post_id
AND wpostmeta1.meta_key = 'date'
AND wpostmeta2.meta_key = 'time'
ORDER BY wpostmeta1.meta_value ASC,
         wpostmeta2.meta_value ASC"

$results = $wpdb->get_results($query);

foreach ( $results as $result ) {
         //output results as desired

Thanks to Jean-Baptiste Jung for the tip.