【问题标题】:How to Get GMT by using Google Time Zone API如何使用 Google Time Zone API 获取 GMT
【发布时间】:2018-11-25 20:52:58
【问题描述】:

我想检索印度的 GMT(5.5) 或其他国家/地区的类似信息。下面是我使用 Google Time Zone API 的代码,并且即将到来的响应是 dstoffset、rawOffset、status、timeZoneId、timeZoneName。我的问题是如何获得 GMT (5.5) 谢谢

 final String registerURL = "https://maps.googleapis.com/maps/api/timezone/json?location=30.293461,78.524094&timestamp=1331161200&key=API_KEY";
            StringRequest stringRequest = new StringRequest(Request.Method.POST, registerURL, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject obj = new JSONObject(response);
                        String s1 = obj.getString("dstOffset");
                        String s2 = obj.getString("rawOffset");
                        String s3 = obj.getString("status");
                        String s4 = obj.getString("timeZoneId");
                        String s5 = obj.getString("timeZoneName");
                        TimeZone tz1 = TimeZone.getTimeZone(s4);
                        TimeZone tz2 = TimeZone.getTimeZone(s4);
                        tvTimeZone.setText(String.valueOf(tz2));

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                        @Override
                        // Handles errors that occur due to Volley
                        public void onErrorResponse(VolleyError error) {
                            Log.e("Volley", "Error");
                        }
                    }
            );

            RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
            requestQueue.add(stringRequest);

【问题讨论】:

  • 请编辑您的问题,因为rawOffset 已记录在案:developers.google.com/maps/documentation/timezone/…
  • 其实先生,我想得到印度的GMT(5.5),请问如何得到。
  • 由于rawOffset 以秒为单位,将这个数字除以 3600 秒(一小时的秒数)得到 UTC 小时有什么问题?并且 UTC 与 GMT 相同。
  • 好的,我知道了,谢谢先生。
  • 我还检查了亚​​洲/喀布尔,其中 "rawOffset" : 16200 并将其与 3600 相除,结果为 4.5,但亚洲/喀布尔的格林威治标准时间为 4.30。

标签: java android google-maps google-maps-timezone


【解决方案1】:

rawOffset 是给定位置与 UTC 的偏移量(以秒为单位)。

由于 UTC 和 GMT 之间没有时差,将rawOffset 除以 3600 即可得到所请求时区的 GMT 时间。

显然,当除以 3600 时,答案是几分之一小时而不是 hour:min 对。所以,如果你得到输出,比如4.50,那实际上是4.5 hours,它与4:30 hours (4 hours 30 minutes) 相同。

【讨论】:

  • 正确,如果dstOffset等于0,但是,如果dstOffset不等于0,需要加上dstOffset rawOffset
猜你喜欢
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-04
  • 2021-11-12
  • 2011-03-14
相关资源
最近更新 更多