Assuming that works for 24 hour days, it won't work for the 23 and 25 hour days when we go on/off daylight time. Another way to do it is to have the timer be created daily.
TimerDailyTimer 22:59 1 60 My_Alias msg #testchannel today is $!date
... where My_Alias displays its command, then runs the above timer command again. Also, the way your command behaves is that it evaluates $date into a string, then displays it 86400 seconds later. You should either use $!identifiername to delay evaluation, or else have My_Alias contain the message in its entirety. The alias should also have error checking, such as making sure you're still in #testchannel.