Ranged time event
A ranged time event is an event can be occur only one time by time range. Example: gift of the day can be obtained each day and only one by day.
In case of multiplayer, the server (all in one or cluster), should be up always, then do the event each 24h, aligned on start time of the master node, is the simplest and most robust method (send by master or timer in case of all in one).
In case of single player, the game and then the server is closed. You need be computer time based (with drift prevent), anti-cheat is useless because the player have savegame on their computer.
No time offset from the time X, because it can do time drift and don't support master time drift.