The situation
Advice, a fitting, a workshop slot, a pickup: the customer should propose a time. If the proposal comes as free text, it says "next week in the morning".
A preferred appointment is only usable once it fits the opening hours. That can be set on the field instead of sorted out afterwards.
Advice, a fitting, a workshop slot, a pickup: the customer should propose a time. If the proposal comes as free text, it says "next week in the morning".
A text field accepts any spelling, and none of them can be sorted. A date field without limits also accepts last Sunday.
The time jumps in quarter hours, because the field carries a step size of 900 seconds.
Minimum, maximum and step become real attributes on the time field. The browser accepts 08:15 and refuses 08:07 - before anything is sent.
A minimum date on the date field rules out yesterday. The server checks the same limit again afterwards.
Date and time appear in the export as columns of their own. That lets you sort the list by day without reading it.
The form asks for a wish, it reserves nothing. It knows neither calendars nor capacity - whoever needs a real booking with an availability check needs a different tool.
As a block on an appointments page, or through an assignment on the services that have appointments.
Topic, branch, date and time as four columns. Optionally an email also goes to the address stored on the form.