Make AtomicLong more atomic & use UTC time for robustness

1) Methods using two Interlocked operations like IncrementAndGet are potentially unsafe because two or more calls to Interlocked do not guarantee that you will receive the expected value (in multithreaded scenario)

2) Use UTC time instead of local time in order to make the code resilient to Daylight Saving Time changes.