yes, it is definitely possible. We are working globally, and such local calendars have always been important to us. Usually, it depends on each customer resp the SLA, where you connect one particular set of Service Hours. How you determine which Service Hours set is used in each case depends on your processes and business logic. A standard way would be to decide that based on the customer resp. a specific SLA: Usually, you have a contract with agreed times of availability, and you create a Service Hours set for them. If customer X creates the Incident, Service Hours X are taken, but if customer Y does it, Service Hours Y are used.
However, for internal services, it may be working differently. For such purposes, I created a Service Hours custom field on the User Group table, and (still depending on the Service used), the Service Hours are copied from the target Responsible Group to the Case.
Regarding Holidays: Are you aware of the Public Holidays feature that came in last year? It was created based on our RFC, so I can tell you exactly how it works:
You create two Day Types, Holiday_X and Holiday_Y.
In Service Hours X, you add Holiday_X with empty times (like “NL”), and in Service Hours Y, you add Holiday_Y.
On the specific Calendar entry (let’s say 20180129), you add Holiday_X into the “Public holidays” tab. What happens? If a Case is opened and uses Service Hours X, the calculation skips that day because it is considered as a public holoday. But if the Case uses Service Hours Y, it is not considered as a holiday because there is no line on the Public holidays tab for Holiday_Y, and so it uses the default Day Type (1 – Monday) instead.
Shall I explain anything further?