The start/end time for each stage isn't stored, so it wouldn't be possible to get that information without a bit of work. I could think of two ways to do this:
You could create datetime fields to hold to start date of each stage. Then, in an automated action or through computed fields, set the start date for each stage when you reach it.
If you need to get this information for old opportunities, you could try pulling the times from Mail Tracking Values. Each time the stage is changed, the old and new value are tracked in mail.tracking.value. You could search through all of the tracking value records, and find the ones corresponding to each opportunity, and then use the create date to find the time spent in each stage. This would probably be more work than the first method, but it would give you data for all opportunites, where as the first would just be new ones.
write a compute field to find the difference.