The Time that you change get stored in the CMOS , if you change the time of your Machine , you will what you have change, but there is Time that you can reply on which must always be correct. So the Following will get you the Correct time always
public static DateTime GetNISTDate(bool convertToLocalTime)
{
Random ran = new Random(DateTime.Now.Millisecond);
DateTime date = DateTime.Today;
string serverResponse = string.Empty;
// Represents the list of NIST servers
string[] servers = new string[] {
"64.90.182.55",
"206.246.118.250",
"207.200.81.113",
"128.138.188.172",
"64.113.32.5",
"64.147.116.229",
"64.125.78.85",
"128.138.188.172"
};
// Try each server in random order to avoid blocked requests due to too frequent request
for (int i = 0; i < 5; i++)
{
try
{
// Open a StreamReader to a random time server
StreamReader reader = new StreamReader(new System.Net.Sockets.TcpClient(servers[ran.Next(0, servers.Length)], 13).GetStream());
serverResponse = reader.ReadToEnd();
reader.Close();
// Check to see that the signiture is there
if (serverResponse.Length > 47 && serverResponse.Substring(38, 9).Equals("UTC(NIST)"))
{
// Parse the date
int jd = int.Parse(serverResponse.Substring(1, 5));
int yr = int.Parse(serverResponse.Substring(7, 2));
int mo = int.Parse(serverResponse.Substring(10, 2));
int dy = int.Parse(serverResponse.Substring(13, 2));
int hr = int.Parse(serverResponse.Substring(16, 2));
int mm = int.Parse(serverResponse.Substring(19, 2));
int sc = int.Parse(serverResponse.Substring(22, 2));
if (jd > 51544)
yr += 2000;
else
yr += 1999;
date = new DateTime(yr, mo, dy, hr, mm, sc);
// Convert it to the current timezone if desired
if (convertToLocalTime)
date = date.ToLocalTime();
// Exit the loop
break;
}
}
catch (Exception ex)
{
/* Do Nothing...try the next server */
}
}
return date;
}
or get the time from the Domain Controller like this
using System.DirectoryServices.ActiveDirectory;
static void FindAnyTimeServer(DirectoryContext context)
{
try
{
DomainController dc = DomainController.FindOne(context, LocatorOptions.TimeServerRequired);
Console.WriteLine("A time server for {0} is {1}.", context.Target, dc.Name);
}
catch (ActiveDirectoryObjectNotFoundException)
{
// No time server found.
Console.WriteLine("No time server was found in {0}.", context.Target);
}
}
Thank you for posting at Dotnetfunda
[Administrator]
vsuri87-15045, if this helps please login to Mark As Answer. | Alert Moderator