【发布时间】:2018-07-12 06:25:37
【问题描述】:
我想将远程设备的时钟与另一台设备同步,而不是不断请求远程设备的时间。
我想知道我的设备和远程设备上的时间之间的差异,所以我可以将远程设备的时间戳添加到事件中。
我目前的解决方案是:获取远程设备的时间,并通过比较来计算差异。
例如:
DateTime myDevice = DateTime.Now();
DateTime remoteDevice = getDateTimeOfRemoteDevice();
//Compare the clocks and keep the difference...
int daydiff = myDevice.Day - remoteDevice.Day
int monthdiff = myDevice.Month - RemoteDevice.Month
// ...and so on un till i have everything separated.
我的问题是:有没有更好的方法来做到这一点?
可能类似于:DateTime difference = DateTimeRemoteDevice - DateTimeMyDevice;,答案是:00/00/00 00:01:50,这将允许我随时重新计算远程设备上的时间(包括天月和年的差异)。
【问题讨论】:
-
DateTime - DateTime = TimeSpan。TimeSpan + DateTime = DateTime。如果你可以简单地尝试一下,为什么要写这么多文字??? -
为什么要比较每个字段?如果你从另一个 DateTime 中减去一个 DateTime,你会得到一个 TimeSpan,这正是你想要的。
-
比较像 DateTime 差异 = DateTimeRemoteDevice - DateTimeMyDevice;更适合我的需要。不过谢谢你的回答。
-
我认为其他设备没有 NTP 支持?如果您想要准确的时间同步,那么您需要做很多工作来支持网络抖动和延迟等内容。 NTP 旨在处理您可能无法找到的所有边缘情况。
-
远程设备不在我的控制之下,所以不知道上面是否有 ntp。也可能是让它们同步的解决方案(感谢提示)
标签: c# datetime synchronization clock