No, it is not! It just checks whether between the two statements two seconds have elapsed (by some miracle or time warp ) If not (and this will be true in about 101% of all tries) the statement is just not executed. Use sleep/Sleep to stop your app for the specified amount of time.
Maybe a sleep method would be a good extension for the Timer interface?
Making it only static won't make a difference. Additionally you need to call the if statement regularly (for example in main loop). And in most cases it's better to use member variables than static's.
Using sleep is the best way to go if you don't want to do anything in your application within that time.
I think the usual way is to set a destination time (i.e. now+2000) and check the current time for being larger or equal to the destination time. This removes the additional expression in each comparison. But otherwise yes, do it within the main loop and you'll come to something like that.