c# – 如何从Internet获取DateTime(外部资源 – 不是来自服务器)

前端之家收集整理的这篇文章主要介绍了c# – 如何从Internet获取DateTime(外部资源 – 不是来自服务器)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从Internet获取当前时间(外部资源 – 不是来自服务器)?
编辑
例如来自以下网站:
http://www.timeanddate.com/worldclock
原因
我会在一个月后将我的页面重定向到一个锁定页面(通过检查DateTime.Now),在该页面中,用户应该输入激活码以便返回…
出于某些安全原因,我想从我的服务器中获取当前日期/时间…

提前致谢

解决方法

我认为这将帮助你摆脱它.应用下面提到的代码从Internet检索日期.
public static DateTime GetFastestNISTDate()
{
    var result = DateTime.MinValue;

    // Initialize the list of NIST time servers
    // http://tf.nist.gov/tf-cgi/servers.cgi
    string[] servers = new string[] {
        "nist1-ny.ustiming.org","nist1-nj.ustiming.org","nist1-pa.ustiming.org","time-a.nist.gov","time-b.nist.gov","nist1.aol-va.symmetricom.com","nist1.columbiacountyga.gov","nist1-chi.ustiming.org","nist.expertsmi.com","nist.netservicesgroup.com"
};

        // Try 5 servers in random order to spread the load
        Random rnd = new Random();
        foreach (string server in servers.OrderBy(s => rnd.NextDouble()).Take(5))
        {
            try
            {
                // Connect to the server (at port 13) and get the response
                string serverResponse = string.Empty;
                using (var reader = new StreamReader(new System.Net.Sockets.TcpClient(server,13).GetStream()))
                {
                    serverResponse = reader.ReadToEnd();
                }

                // If a response was received
                if (!string.IsNullOrEmpty(serverResponse))
                {
                    // Split the response string ("55596 11-02-14 13:54:11 00 0 0 478.1 UTC(NIST) *")
                    string[] tokens = serverResponse.Split(' ');

                    // Check the number of tokens
                    if (tokens.Length >= 6)
                    {
                        // Check the health status
                        string health = tokens[5];
                        if (health == "0")
                        {
                            // Get date and time parts from the server response
                            string[] dateParts = tokens[1].Split('-');
                            string[] timeParts = tokens[2].Split(':');

                            // Create a DateTime instance
                            DateTime utcDateTime = new DateTime(
                                Convert.ToInt32(dateParts[0]) + 2000,Convert.ToInt32(dateParts[1]),Convert.ToInt32(dateParts[2]),Convert.ToInt32(timeParts[0]),Convert.ToInt32(timeParts[1]),Convert.ToInt32(timeParts[2]));

                            // Convert received (UTC) DateTime value to the local timezone
                            result = utcDateTime.ToLocalTime();

                            return result;
                            // Response successfully received; exit the loop

                        }
                    }

                }

            }
            catch
            {
                // Ignore exception and try the next server
            }
        }
        return result;
    }

猜你在找的C#相关文章