Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: Getting the date and time from a NTP server [closed]

I would like to obtain the date and time from my own time server (i.e. 192.168.1.X) for the use inside my Android application

I have searched in the web and there are two solutions:

solution 1

solution 2

However, I was wonder if there is any solution without importing any libraries?

Thanks!!

like image 474
MW_hk Avatar asked May 28 '13 08:05

MW_hk


1 Answers

I end up using this one.

Create another class and then add the code inside. And then calling the class from my main activity to obtain the date.

The code is a bit old and I modified it by adding AsyncTask... works fine for me...

And one more thing, the usage of the class (from what the code sugguest) gives String.valueof(now) returns 0. Date should be used as below:

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());
}

Updated: 2019-11-06

Use the latest SntpClient library from here https://github.com/aslamanver/sntp-client-android

Retrieve the time of a specific time zone.

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());
    }
});
like image 129
MW_hk Avatar answered Oct 23 '22 06:10

MW_hk