大公司的服务相对稳定,获取百度服务器的时间即无限接近获取标准的北京时间,可以用于需要严格的时间验证等场景。
此方法是根据http协议获取头文件里的date来实现的,这里用百度为例,其他家的一样,把对应的网址换成目标地址的即可。
///<summary> /// 获取标准北京时间 ///</summary> public static DateTime GetBeijingTime() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.baidu.com"); request.Method = "HEAD"; request.AllowAutoRedirect = false; HttpWebResponse reponse = (HttpWebResponse)request.GetResponse(); string cc = reponse.GetResponseHeader("date"); reponse.Close(); DateTime time; bool s = GMTStrParse(cc, out time); return time.AddHours(8); //GMT要加8个小时才是北京时间 } public static bool GMTStrParse(string gmtStr, out DateTime gmtTime) { //抓取的date是GMT格式的字符串,这里转成datetime CultureInfo enUS = new CultureInfo("en-US"); bool s = DateTime.TryParseExact(gmtStr, "r", enUS, DateTimeStyles.None, out gmtTime); return s; }
调用方法:string strTime = GetBeijingTime().ToString();