src/main/java/com/conveyal/gtfs/stats/PatternStats.java
public long getTotalRevenueTimeForTrips (Collection<Trip> trips) {
        TIntList times = new TIntArrayList();
        for (Trip trip : trips) {
            StopTime first;
            StopTime last;
            Spliterator<StopTime> stopTimes = feed.getOrderedStopTimesForTrip(trip.trip_id).spliterator();;

            first = StreamSupport.stream(stopTimes, false)
                    .findFirst()
                    .orElse(null);

            last = StreamSupport.stream(stopTimes, false)
                    .reduce((a, b) -> b)
                    .orElse(null);

            if (last != null && first != null) {
                // revenue time should not include layovers at termini
                int time = last.arrival_time - first.departure_time;

                times.add(time);
            }
        }

        return times.sum();
    }
public long getTotalRevenueTimeForTrips (Collection<Trip> trips) {
        TIntList times = new TIntArrayList();
        for (Trip trip : trips) {
            StopTime first;
            StopTime last;
            Spliterator<StopTime> stopTimes = feed.getOrderedStopTimesForTrip(trip.trip_id).spliterator();;

            first = StreamSupport.stream(stopTimes, false)
                    .findFirst()
                    .orElse(null);

            last = StreamSupport.stream(stopTimes, false)
                    .reduce((a, b) -> b)
                    .orElse(null);

            if (last != null && first != null) {
                // revenue time should not include layovers at termini
                int time = last.arrival_time - first.departure_time;

                times.add(time);
            }
        }

        return times.sum();
    }
Get total revenue time (in seconds) for set of trips.
@param trips
@return total revenue time (in seconds)