【发布时间】:2015-07-07 09:08:16
【问题描述】:
我想在 C# 中获取真正的当前日期。目前我面临一个问题,如果有人更改系统时间,它将显示错误的时间和日期。我用DateTime.Now。但在这种情况下它不起作用。提前致谢。
【问题讨论】:
-
使用 NTP 服务器:stackoverflow.com/questions/1193955/…
我想在 C# 中获取真正的当前日期。目前我面临一个问题,如果有人更改系统时间,它将显示错误的时间和日期。我用DateTime.Now。但在这种情况下它不起作用。提前致谢。
【问题讨论】:
从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 未被阻塞。
【讨论】:
DateTime.Now 正在按预期返回时间:这是由系统决定的。
获取一个 DateTime 对象,该对象设置为此计算机上的当前日期和时间,以本地时间表示。
如果您想依赖“实时”,您需要继续并与 NIST time servers 之一进行协调 - 这样您就可以匹配,并通知不一致或任何您需要的东西这样做需要依赖于现实世界中的时间,而不是像单台机器上的人工可编辑时间所说的那样。
【讨论】: