The time of day system was something I iterated on quite a lot for various projects at Improbable. A lot of the BP logic for this was plugged together by the excellent Jon Chapman at Improbable.
One of the key things I wanted was to give every event live time of day options with the full ability to tweak settings if needed but with no 'fudging' built inherently into the system. It also needed to be a single BP object that could be dropped in to any level and include all required content and hooks including things like postprocess settings and skybox.
This obviously makes use of standard UE5 features like Lumen, Volumetric Clouds and SkyAtmosphere but with some additional BP and MPC systems running behind the scenes. The sun angles were based off arc data but with the ability to be less physically plausible and have an extended sunrise+sunset time if needed. Moonlight was tricky to support efficiently without ever having two directional lights active. There were options to swap between sun + moon shadows but it was tricky to completely avoid popping. For lighter performance we had the option to just use a non shadow casting moon from the skybox material.
The system could use predefined/fixed time of day but we could also set things to play dynamically with game time or be changed via director panel for event control.
It's also worth noting that I trialled using physically based lighting values for this system but we ended up rolling it back to more standard UE defaults (smaller numbers!) as it created too much knock on work for other content to rebalance.