Scheduling in OH is hard unfortunately. But I think we can do something reasonable. It’s third on my list to look at:
Hysteresis which is tied up with multiple setpoints for heater/cooler.
Typically one of two approaches are used.
The CalDav binding lets users connect openHAB to a calendar (e.g. Google Calendar though I think it works with Outlook and Nextcloud too) and they use the calendar to set up schedules. This has the advantage of providing a nice user interface for adjustments but it can be tricky to get set up and working right and it is very sensitive to how you create the calendar entries. See https://www.openhab.org/addons/bindings/caldav-personal1/ to get started. But be aware that it’s a 1.x version binding which are no longer being supported.
Use some variation of the Time of Day Design Pattern. This is an approach that lets you centralize and build a time of day state machine. It can work with static times (e.g. 06:00) or events (e.g. nautical sunrise start from the Astro binding) and determine what part of the day it currently is and set an Item. From there you can use the state and clever Item naming to define a different set of setpoints for each time period defined by the ToD Rule (e.g. Temp_Setpoint_MORNING, Temp_Setpoint_Bedtime, etc.).
But even once this is implemented, the UI for it won’t be great as you will have to create Items with a specific configuration to define your start and stop times for each time of day.
There is a tutorial for creating a Timeline Picker which I’ve not looked into heavily yet but looks very promising for this. I’m not sure how well it will integrate with the Time of Day DP yet though.
Anyway, back to the topic. For now I would recommend looking at the ToD DP to define and implement your time of day periods. Then create setpoint Items that correspond with each ToD state. Then in the Rules that need to check the setpoints, see Associated Items Design Pattern to get the Temp Setpoint for the current time period. Everything else should remain the same. You’ll still have to define the schedule in code, but you can at least see what the schedule is set to. And if you really need to adjust the schedule times from a UI, see https://community.openhab.org/t/individual-alarm-clock-for-each-day-of-week-with-adjustable-duration/23448 for a comprehensive way to set up the times on Basic UI.
Unfortunately, I don’t know of any simple tutorial that will show you end to end how to set this up. But I recommend picking an approach and come back to ask for help if you need it.