gpt4 book ai didi

c# - 同步两个日期时间

转载 作者:行者123 更新时间:2023-11-30 23:05:50 30 4
gpt4 key购买 nike

我想将远程设备的时钟与另一台设备同步,而不是不断请求远程设备的时间。

我想知道我的设备和远程设备上的时间之间的差异,所以我可以将远程设备的时间戳添加到事件中。

目前我的解决方案是:获取远程设备的时间,通过比较计算差值。

例如:

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 difference = DateTimeRemoteDevice - DateTimeMyDevice;,除了您指定的返回值是 DateTime 而不是一个 TimeSpan。这应该可以解决问题:

TimeSpan difference = getDateTimeOfRemoteDevice() - DateTime.Now;

保存此差异后,您现在可以随时模拟远程设备时间:

DateTime remoteTimestamp = DateTime.Now + difference;

如果你真的想知道有多少天、小时、分钟等由difference表示,TimeSpan类有一些很好的属性可以帮助你解决这个问题:

Console.WriteLine($"Local time .... {DateTime.Now}");
Console.WriteLine($"Remote time ... {remoteTimestamp}");
Console.WriteLine(new string('-', Console.WindowWidth));
Console.Write("Remote time is different by: ");
Console.Write($"{difference.Days} days, ");
Console.Write($"{difference.Hours} hours, ");
Console.WriteLine($"{difference.Minutes} minutes;");
Console.WriteLine($"or a total of {difference.TotalMinutes} minutes.");

Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();

输出

enter image description here

当然,如果远程时间小于当前时间,这些数字将变为负数:

enter image description here

关于c# - 同步两个日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48571045/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com