It would work, but it would happen EVERY time the server started (even if it was due to a crash) instead of at specific times (which is ideal so players can expect the restarts), and you would have no way to cancel it because it's all encapsulated inside that event with no way for you to intercept it once the countdown begins.
I use something like this:
code_language.skript:
command /cancelrestart:
permission: skript.admin
trigger:
set {cancelNextRestart} to true
send "The next automated restart will be canceled" to the player
every minute:
if "%now%" contains "11:55":
{cancelNextRestart} isn't true
broadcast "The server will restart in 5 minutes."
set {timeUntilRestart} to 5 minutes
else if "%now%" contains "11:59":
if {cancelNextRestart} is true:
delete {cancelNextRestart}
stop
broadcast "The server will restart in 1 minute."
if {cancelNextRestart} is true:
delete {cancelNextRestart}
stop
wait 50 seconds
if {cancelNextRestart} is true:
delete {cancelNextRestart}
stop
broadcast "10 seconds until restart, stop all crafting and similar actions!"10 ticks fade out
wait 7 seconds
if {cancelNextRestart} is true:
delete {cancelNextRestart}
stop
loop 3 times:
broadcast "Restart in %4 - loop-number%..."
wait 1 second
if {cancelNextRestart} is true:
delete {cancelNextRestart}
stop
execute console command "/restart"