是否可以在没有任何互联网连接的情况下获得真实日期(非系统日期)? 我用C#开发了我的应用程序。 DateTime.Now获取系统日期但我想知道实际日期,因为系统日期可能是错误的。
有可能吗?怎么做?
答案 0 :(得分:8)
如果系统日期错误,那么您的应用程序必须从其他地方获取正确的日期。这意味着和外部资源。它可以在网络上,也可以是网络中的另一台服务器,也可以手动输入。没有神奇的解决方案。
答案 1 :(得分:2)
没有。在没有任何外部通信的情况下,你所拥有的就是计算机中的时钟。如果你不相信那些,你就会被塞满。
当然,如果您试图阻止某人发布软件的定时试用许可证,您可以执行诸如记录您见过的最新UTC时间之类的事情,并且如果您之前看到,则会变得可疑启动时间比上一次启动...特别是如果你反复看到它。当然,这与获得真实日期不同。
答案 2 :(得分:2)
如果您知道系统日期与“实际日期”之间的差异,则只能执行此操作。如果在TimeSpan对象中有此delta,则可以使用DateTime.Now.Add(delta)
创建“实际日期”。如果您没有网络连接,则必须以其他方式获取增量,例如用户输入的值。但这很难,因为机器上系统时钟的频率可能会有所不同。
答案 3 :(得分:2)
即使没有互联网, 其他“可靠”的外部时间源。但是,互联网是最简单的,并且已经存在许多时间协议/服务器。这些是作为想法提供的,并不一定是可行的解决方案。
NIST原子钟广播(例如那些“原子钟”如何工作)。我不确定PC的任何商用硬件都能读取这些信号。与电子工程师成为朋友。
GPS。有许多不同的GPS硬件可用于连接PC(USB加密狗等)。甚至比如iPhone也是如此。 (即使没有GPS支持,现代手机也可以从网络获得时间同步。)
你自己的原子钟!漂移应该是可以忽略的; - )
快乐......东西。
答案 4 :(得分:1)
如果没有互联网,您将需要GPS接收器或Radio clock设备。
如果您可以建立某种形式的互联网连接,您可以呼叫NTP服务器,这应该提供准确的(原子)时间。 C#没有我所知道的内置NTP客户端,但有一个可用于:
http://mftoolkit.codeplex.com/
有关NTP的信息,请访问: