Relying on the OS for checking a date that can be altered --> you have already lost the game
Any method can and will be broken, to add insult to injury your starting off from a lost position. An external network based would be the sensible choice, but even that can be thwarted.
The key words to your question is
Reliable
and the simple answer is NO, there is no point in hammering a square peg into a round hole..
Edit 1: Weak solution
OK, understanding that this is pretty much a lost battle, if you still insist on having some very weak solution here is one possibility:
We know that time should only increment upwards, thus based on this assumption, this can be our 'test'. Violation of this rule we can assume someone is tampering with time and therefore block this case.
(1) On the first ever run of the application create an encrypted file with the current date (time-stamp).
(2) Every-time the application is run, first check for this file and check the current time from the OS.
(3) from our base assumption, we should expect that the current time should always be greater the stored time time. If it is we can WEAKLY assume that the OS time is 'Reliable'.
(3) If the current time is less than the stored time, then some one has been tampering the OS time -> bad guy.
(5) Upon closing encrypt the current time.
(6) If the encrypted file is missing assume also bad guy.