14

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

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

解决方案 1

解决方案 2

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

谢谢!!

4

1 回答 1

24

我最终使用了这个

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

代码有点旧,我通过添加 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());
    }
});
于 2013-05-29T10:01:02.333 回答