在不使用系统时间的情况下获取一个国家/地区的当前日期时间

时间:2018-09-08 18:56:26

标签: java android datetime

我正在尝试获取我所在国家的实际电流,但是我使用的方法取决于设备上的时间。我将设备上的时间设置为9 AM,而实际上是7 PM,以下方法返回8 AM,这当然是错误的。

simpledate.setTimeZone(TimeZone.getTimeZone("Europe/Slovakia"));
to_time = simpledate.format(new Date());

有什么方法可以获取该国家/地区的实时时间,而不必依赖于系统时间?我认为设备必须连接到Internet。我国也使用DST,因此也必须考虑到这一点。浏览了类似的问题,没有帮助。

2 个答案:

答案 0 :(得分:1)

有两种方法可以执行以下操作:是否需要访问以JSON格式或XML提供当前日期和时间的Web服务,或者可以从

这样的网站解析时间
  

http://www.timeanddate.com/worldclock/

另一个从时间服务器获取时间的替代代码段。您需要一个Apache Commons Net libray才能正常工作。

-A 1

您可以在HERE上找到其他时间服务器。只需将grep替换为一个。

答案 1 :(得分:0)

package com.myapp.utils;

import android.os.StrictMode;
import java.io.IOException;
import org.apache.commons.net.time.TimeTCPClient;


public class InternetTime {

    public static long getFechaHora() {
        long time = 0;
        try {
            TimeTCPClient client = new TimeTCPClient();

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);

            try {
                client.setDefaultTimeout(5000);
                client.connect("time.nist.gov");
                //System.out.println(client.getDate());
                time = client.getTime();
            } finally {
                client.disconnect();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return time;
    }

}

避免在主线程上出现网络异常