游戏的主要“Ping”/“时间”功能是:
Net Code For Server - Time/Ping
在交换机之外,TimeSync()的功能如下:
private void TimeSync()
{
YGConnection.Send("Time", DateTime.UtcNow.Millisecond);
}
它将当前UTCNow.Millisecond时间发送到服务器。
最后,getTime()获取当前时间+服务器的偏移量。
private double getTime()
{
return Math.Round((DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds) + Offset;
}
一切正常,但产生的数字是这样的:
版本0.1.5:服务器时间偏移:-486335789940 - Ping:-943491433067
服务器基本上发送getTime(),但没有偏移量。我想知道负数是怎么回事,如果我有什么办法可以解决这个问题。
答案 0 :(得分:1)
DateTime.Milliseconds是当前秒内的毫秒数(千分之一秒)。如果你只比较毫秒,你将丢失任何信息,如它发生的第二个。
午夜时间是00:00:00.000
500毫秒后,它是00:00:00.500
500毫秒后,它是00:00:01.000
如果您只是比较毫秒,前两次之间的差异将是500 最后两个之间的差异将是-500。
您可能想要做的是返回一个完整的日期/时间值,而不仅仅是毫秒。如果减去2个DateTime对象,则会得到TimeSpan个对象。从那里你可以发现TimeSpan.TotalMilliseconds将给你这两次之间有多少毫秒,无论经过了多少秒。