Unity获取网络时间

259 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

    private void Start()
    {
        Debug.Log(GetNetDateTime().ToString("yyyy-MM-dd HH:mm:ss"));
    }
    
    public DateTime GetNetDateTime()
    {
        WebRequest request = null;
        WebResponse response = null;
        WebHeaderCollection headerCollection = null;
        string datetime = string.Empty;
        DateTime timeNow = DateTime.MinValue;
        try
        {
            request = WebRequest.Create("https://www.microsoft.com");
            request.Timeout = 3000;
            request.Credentials = CredentialCache.DefaultCredentials;
            response = (WebResponse)request.GetResponse();
            headerCollection = response.Headers;
            foreach (var h in headerCollection.AllKeys)
            {
                if (h == "Date")
                {
                    datetime = headerCollection[h];
                    timeNow = Convert.ToDateTime(datetime);
                }
            }
            return timeNow;
        }
        catch (Exception)
        {
            Debug.LogError("获取网络时间错误");
            return DateTime.Now;
        }
        finally
        {
            if (request != null)
            { request.Abort(); }
            if (response != null)
            { response.Close(); }
            if (headerCollection != null)
            { headerCollection.Clear(); }
        }
    }