In the linked article the pattern to fake time is to use a static class to wrap calls to DateTime.Now and then uses a TimeSpan property to indicate how to offset time. The fundamental rules broken are; using a static class (test unfriendly construct) to wrap a global value (test unfriendly feature) means if we run multiple tests in parallel we no longer know what is going to happen in the tests. Second the way to manipulate the date which is only needed for tests is now available in production code. Last it uses an offset rather than a fixed value to offset time which means it would be very hard to test something where you actually want exact time values to be returned.
The most important thing to do would be to move away from using a static class. Second use a fixed time or even better a delegate to override default behavior of getting current time. The use of a delegate to fake time is that during the execution of a test you can change what you return very easily.