Because Timetask is basically performed by Timer. _Timer.Schedule (Timetask, Date) Current time is 2004-10-31 20: 00: 24TimeTask task time is 2004-11-01 00:00:00 Test failed: first execute the program, then modify the system time 2004-11 -01 01:00:00. Successful test: First modify the system time is 2004-10-01 23:58:00. Re-executing the program ... Waiting time to 2004-11-01 00:00:00 Successfully executed task I guess, Timer is starting to count after the statement! Otherwise, Timetask is definitely executed after the time.