Services without specific duration

I would like to be able to offer services that do not have a specified duration. The client should be able to select start and end times. And the costs should be calculated using an hourly rate.

Is this possible and if so, could you give me any hint how-to? I’m not afraid of some hardcore coding if needed, but it would be even more awesome if it is possible without.

Additional question: can I set the availability of my service provider on the real calendar instead of the same for each week. My service providers are not available on the same standard hours every week.