【问题标题】:How to get Time Zone through IP Address in JAVAJAVA中如何通过IP地址获取时区
【发布时间】:2012-12-20 09:03:09
【问题描述】:

我想通过 JAVA 中的 IP 地址获取时区。

实际上我有一个将在客户端机器上运行的应用程序。

我有客户端机器的 IP 地址。但无法获取每台客户端机器的时区。

在客户端机器中

【问题讨论】:

  • 你想在服务器还是客户端获取它?
  • 客户端机器知道它的时区。为什么要从它的 IP 地址推断它? LAN 上的机器使用私有寻址方案(例如 192.168.x.x)呢?
  • 检查这个post out。它是 C# XML 版本,但您可能会有所了解。
  • 获取客户端区域并发送到服务器,看我的回答。

标签: java jsp


【解决方案1】:

用于通过 IP 地址获取时区;有 GeoTimezone,其中有一定范围的 IP 代表更具体的 TIMEZONE 和国家。您可以下载 CSV 格式的所有文件并创建一个数据库。然后通过sql查询你可以得到你的时区。

【讨论】:

    【解决方案2】:

    在 Java 中会给你时区

    java.util.TimeZone.getDefault();
    

    如果你想在服务器上获取客户端的时区,那么在客户端调用这个并发送回服务器。

    【讨论】:

      【解决方案3】:

      我认为这是不可能的。 但是你能做的是通过 HTML 使用 JavaScript 获取时区,然后通过表单提交或类似的方式检索这些数据。

      【讨论】:

        【解决方案4】:

        使用 getZoneFromIpAddress(String ip) :

            private static String readAll(Reader rd) throws IOException {
                StringBuilder sb = new StringBuilder();
                int cp;
                while ((cp = rd.read()) != -1) {
                  sb.append((char) cp);
                }
                return sb.toString();
            }
            
                public String getZoneFormIpAddress(String ip) throws IOException{
                  String zone = "inconnu";
                  try {
                      JSONObject json = readJsonFromUrl("https://api.ipdata.co/"+ip+"?api-key=test");
                      zone = json.get("country_name")+" "+json.get("city");
                  } catch (Exception e) {
                  }
                  return zone;
            } 
              
                public String getJsonCodeFromUrl(String url) throws IOException{
                  JSONObject json = readJsonFromUrl(url);
                  return json.toString();}
                  public String getJsonValueByKey(String url, String key) throws IOException{
                  JSONObject json = readJsonFromUrl(url);
                  return (String) json.get(key);}
        
        
            public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {
        
                InputStream is = new URL(url).openStream();
        
                try {
                  BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
                  String jsonText = readAll(rd);
                  JSONObject json = new JSONObject(jsonText);
                  return json;
                } finally {
                  is.close();
                }
            }
        

        【讨论】:

          猜你喜欢
          • 2010-10-19
          • 2020-12-19
          • 2015-12-19
          • 2020-06-10
          • 1970-01-01
          • 1970-01-01
          • 2014-01-10
          • 1970-01-01
          相关资源
          最近更新 更多