internal static uint GetUnixTime() => (uint) DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; }
private async Task <uint> GetSteamTime() { if (SteamTimeDifference.HasValue && (DateTime.UtcNow.Subtract(LastSteamTimeCheck).TotalHours < SteamTimeTTL)) { return((uint)(Utilities.GetUnixTime() + SteamTimeDifference.Value)); } await TimeSemaphore.WaitAsync().ConfigureAwait(false); try { if (SteamTimeDifference.HasValue && (DateTime.UtcNow.Subtract(LastSteamTimeCheck).TotalHours < SteamTimeTTL)) { return((uint)(Utilities.GetUnixTime() + SteamTimeDifference.Value)); } uint serverTime = await Bot.ArchiWebHandler.GetServerTime().ConfigureAwait(false); if (serverTime == 0) { return(Utilities.GetUnixTime()); } SteamTimeDifference = (int)(serverTime - Utilities.GetUnixTime()); LastSteamTimeCheck = DateTime.UtcNow; return((uint)(Utilities.GetUnixTime() + SteamTimeDifference.Value)); } finally { TimeSemaphore.Release(); } }