using System; namespace JiaZhiQuan.Common.SnowFlake { public static class TimeExtensions { public static Func currentTimeFunc = InternalCurrentTimeMillis; public static long CurrentTimeMillis() { return currentTimeFunc(); } public static IDisposable StubCurrentTime(Func func) { currentTimeFunc = func; return new DisposableAction(() => { currentTimeFunc = InternalCurrentTimeMillis; }); } public static IDisposable StubCurrentTime(long millis) { currentTimeFunc = () => millis; return new DisposableAction(() => { currentTimeFunc = InternalCurrentTimeMillis; }); } public static readonly DateTime Jan1st1970 = new DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); private static long InternalCurrentTimeMillis() { return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds; } } }