2015-07-07 3 views
-1

Я хочу получить реальную текущую дату на C#. В настоящее время я столкнулся с проблемой, что, если кто-то изменит системное время, он покажет неправильное время и дату. Я использовал DateTime.Now. Но в этом случае он не работает. Заранее спасибо.Как получить реальную текущую дату в C#?

+5

Использование NTP-сервера: http://stackoverflow.com/questions/1193955/how-to-query-an-ntp-server-using-c –

ответ

5

Получить его из NIST

var client = new TcpClient("time.nist.gov", 13); 
using (var streamReader = new StreamReader(client.GetStream())) 
{ 
    var response = streamReader.ReadToEnd(); 
    var utcDateTimeString = response.Substring(7, 17); 
    var localDateTime = DateTime.ParseExact(utcDateTimeString, "yy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal); 
} 

И убедитесь, что порт 13 не заблокирован.

0

DateTime.Now возвращает время, как ожидалось: это продиктовано системой.

Получает объект DateTime, который установлен на текущую дату и время на этом компьютере, выраженное как местное время.

Если вы хотите, чтобы полагаться на «реальное время», вам нужно идти дальше и смириться с чем-то вроде одного из NISTtime servers - таким образом вы можете сопоставить, и сообщить о несоответствиях или все, что нужно делать это полагается на время в реальном мире, а не на то, что указано человеко-редактируемым временем на одной машине.

Смежные вопросы