【问题标题】:Android: Getting the date and time from a NTP server [closed]Android:从 NTP 服务器获取日期和时间 [关闭]
【发布时间】:2013-05-28 08:23:24
【问题描述】:

我想从我自己的时间服务器(即 192.168.1.X)获取日期和时间,以便在我的 Android 应用程序中使用

我在网上搜索过,有两种解决方法:

solution 1

solution 2

但是,我想知道是否有不导入任何库的解决方案?

谢谢!!

【问题讨论】:

  • 您自己对此进行过任何研究吗?有许多类似语言的实现,而没有使用任何重量级的外部库。看看这个例子stackoverflow.com/questions/1193955/…
  • 请再次为这篇文章投票.....我在问Android编程......我想知道Android中是否已经有任何我可以使用的功能,或者我只需要导入库.... Android 编程与您建议的不同

标签: android datetime ntp


【解决方案1】:

我最终使用this one

创建另一个类,然后在里面添加代码。然后从我的主要活动中调用课程以获取日期。

代码有点旧,我通过添加 AsyncTask 对其进行了修改...对我来说效果很好...

还有一件事,类的用法(根据代码建议)给出的 String.valueof(now) 返回 0。日期应如下使用:

SntpClient client = new SntpClient();
if (client.requestTime("time.foo.com")) {
    long now = client.getNtpTime() + SystemClock.elapsedRealtime() - 
    client.getNtpTimeReference();
    Date current = new Date(now);
    Log.i("NTP tag", current.toString());
}

更新日期: 2019-11-06

从这里使用最新的 SntpClient 库 https://github.com/aslamanver/sntp-client-android

检索特定时区的时间。

SNTPClient.getDate(TimeZone.getTimeZone("Asia/Colombo"), new SNTPClient.Listener() {
    @Override
    public void onTimeReceived(String rawDate) {
        // rawDate -> 2019-11-05T17:51:01+0530
        Log.e(SNTPClient.TAG, rawDate);
    }

    @Override
    public void onError(Exception ex) {
        Log.e(SNTPClient.TAG, ex.getMessage());
    }
});

【讨论】:

  • 嗨,我需要你的帮助来获取使用 NTP 的日期和时间。你能帮帮我吗?
  • 您需要在任何PC或设备上设置一个时间服务器,然后在您的应用程序中包含ntpclient库,然后您可以从您的应用程序中查询时间服务器的时间......跨度>
  • 我总是遇到超时异常。您使用了@user1702061 的什么超时时间?
  • 是您的服务器对请求没有响应吗? (呃……我实际上从来没有遇到过任何超时异常@-@..)
  • 总是返回当前系统时间,怎么回事?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多