当前Android时间以纳秒为单位

时间:2016-11-19 08:39:32

标签: java android time

我想在客户端和服务器中使用Socket测量两部Android手机的传输时间,所以我认为最简单的方法是放

System.NanoTime()

从客户端发送后,从服务器接收后,然后减去它们以获得确切的时间。 但是我在每部手机上都有不同的时间,当减去它们时,我有一个奇怪的长号码(第一个小手机有xxxxxx E12,另一个小手机xxxxxx E13号码) 那么如何以可读格式获取数字,如果我使用不同类型的手机,会有不同的结果吗? 感谢

1 个答案:

答案 0 :(得分:1)

根据我的理解,您只需要计算传输时间,这是请求 - 响应所花费的时间。

因此,在建立连接之前,您可以做的是调用currentTimeMillis()而不是返回nano:

long sTime = System.currentTimeMillis();

然后在您得到回复后使用:

long fTime = System.currentTimeMillis();
long elapsedTime = fTime - sTime;
  

如何以可读格式获取数字?

DateFormat.getInstance().format(elapsedTime);

以上内容适用于System.NanoTime(),无论您是想要使用nano还是milli,如果您想要进行极其精确的测量,并且对您而言比使用性能更重要纳米

当然,你必须记住,elapsedTime会随着时间的推移而变化,因为除了好的实现之外还有更多的东西,所以不要期望它是恒定的。

修改1:

  

我使用DateFormat和nanoTime因为我需要很短的时间,但我得到了   1970年1月1日凌晨3:28 !!我只需要(123455纳秒时间)   发送)

这就是为什么我在我的示例中使用System.currentTimeMillis作为纳秒时间形式将是10 ^ -9秒,以获得更大的粒度使用System.currentTimeMillis()或者你可以只需使用以下命令将nano转换为秒:

TimeUnit.SECONDS.convert(elapsedTime, TimeUnit.NANOSECONDS);

如果您不想使用TimeUnit,只需将您获得的数字除以1000000000