在java中显示更新的ntp时间

时间:2015-04-01 16:24:47

标签: java ntp

我目前正在用Java编写NTP客户端和服务器。我正在使用NTP时间戳计算偏移和往返延迟。我应该指出,我分别计算秒数(前32位)和分数(后32位)。我得到偏移结果,如0秒和1859395165分数。

我的问题是,如果根据给定的偏移量调整我的系统时间,我该如何使用这些偏移来打印出系统时间?

我想我可以将分数添加到我的系统当前时间的时间戳的分数部分,但如果分数的总和大于1秒,我相信我会遇到问题,因为我的秒数将是不正确。

1 个答案:

答案 0 :(得分:0)

您可以先将分数转换为毫秒,然后再进行计算。然后让我们说从服务器返回时间11:05:21:900,偏移量为200毫秒。然后你将它添加到11:05:21:900并得到11:05:22:100。

您只需要一个函数来检查在添加偏移后是否达到新的秒/分钟等。该代码的开头可能如下所示。

systemMs += offsetMs;
if (systemMs >= 1000)
{
    systemS += 1;
    systemMS -= 1000;
    if (systemS >= 60)
    {
        etc
    }
}