Displaying the availability in 30 minute intervals is more of a UI thing in your page design. As long as the Availability record in the database saves the start to end dates (whether separate dates or a date range) and you have a separate number field to save their interval preference (e.g. 15, 30, 45, 60, etc.) then you have all the raw data to manipulate however you need on the front-end.
Take a look at the “Date & Time Toolkit” plugin, which has a great element called “Split Date Ranges” that can help you dynamically generate the times with whatever interval given some start and end. This isn’t my plugin, but we use it a lot with our clients who are building scheduling features.