how can get DateTime From Internet (External Resource - Not From Server)
ho开发者_如何学Gow can i get current time From Internet (External Resource - Not From Server)?
Edited For Example From the Below WebSite : http://www.timeanddate.com/worldclock Reason i will redirect my pages to a Lock page after one month (by checking DateTime.Now) and in that page user should input activation code for comming back... for some security reasons i want to get the current Date/Time From Out Of My Server...thanks in advance
I think this will help you out of it.Apply the below mentioned code for retrieving the date from 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;
}
You can't, not by using DateTime.Now
. It is a property of the DateTime
structure that can't be overridden.
You can use an NTP server to get time (though there is not support in the BCL for one).
Why not use a HttpRequest to query the RSS feed of a site which gives world time? Is this what you mean?
Why would you want to get it from the internet, you would still be getting it from someone's sever.
You can get the DateTime using JavaScript
myDate = new Date();
myday = myDate.getDay();
mymonth = myDate.getMonth();
myweekday= myDate.getDate();
Check this article to javascript date and time object
and look at this as well JavaScript Date Object - Dead link fixed
精彩评论