如何通过在 Flutter 中使用来自 OpenWeather API 的时区 属性 获取任何 city/country 的当前时间?
how to get the current time for any city/country by using timezone property from OpenWeather API in Flutter?
我通过使用 OpenWeather 的 API 获得了这个 JSON 响应:
{
"coord": {
"lon": 139.69,
"lat": 35.69
},
"weather": [
{
"id": 803,
"main": "Clouds",
"description": "broken clouds",
"icon": "04d"
}
],
"base": "stations",
"main": {
"temp": 306.63,
"feels_like": 311.16,
"temp_min": 304.82,
"temp_max": 308.15,
"pressure": 1011,
"humidity": 63
},
"visibility": 10000,
"wind": {
"speed": 3.1,
"deg": 140
},
"clouds": {
"all": 75
},
"dt": 1598419499,
"sys": {
"type": 1,
"id": 8077,
"country": "JP",
"sunrise": 1598386129,
"sunset": 1598433465
},
"timezone": 32400,
"id": 1850144,
"name": "Tokyo",
"cod": 200
}
我希望使用 timezone
属性 或另一个 属性 获取该城市的当前时间。可能吗?怎么样?
使用从 API 获得的 timezone
获取城市当前时间的方法如下:
DateTime.now().add(Duration(seconds: timezone - DateTime.now().timeZoneOffset.inSeconds))
您将从这里获得一个 DateTime
对象。
要解决您的问题,您必须将您的国家代码转换为国家名称,然后执行您的 JSON 代码来解决您的问题。
TextView textView = findViewById(R.id.textView);
Locale loc = new Locale("","JP");
String country = loc.getDisplayCountry();
//JSON Code
TimeZone tz = TimeZone.getTimeZone(country + "/" + city);
我通过使用 OpenWeather 的 API 获得了这个 JSON 响应:
{
"coord": {
"lon": 139.69,
"lat": 35.69
},
"weather": [
{
"id": 803,
"main": "Clouds",
"description": "broken clouds",
"icon": "04d"
}
],
"base": "stations",
"main": {
"temp": 306.63,
"feels_like": 311.16,
"temp_min": 304.82,
"temp_max": 308.15,
"pressure": 1011,
"humidity": 63
},
"visibility": 10000,
"wind": {
"speed": 3.1,
"deg": 140
},
"clouds": {
"all": 75
},
"dt": 1598419499,
"sys": {
"type": 1,
"id": 8077,
"country": "JP",
"sunrise": 1598386129,
"sunset": 1598433465
},
"timezone": 32400,
"id": 1850144,
"name": "Tokyo",
"cod": 200
}
我希望使用 timezone
属性 或另一个 属性 获取该城市的当前时间。可能吗?怎么样?
使用从 API 获得的 timezone
获取城市当前时间的方法如下:
DateTime.now().add(Duration(seconds: timezone - DateTime.now().timeZoneOffset.inSeconds))
您将从这里获得一个 DateTime
对象。
要解决您的问题,您必须将您的国家代码转换为国家名称,然后执行您的 JSON 代码来解决您的问题。
TextView textView = findViewById(R.id.textView);
Locale loc = new Locale("","JP");
String country = loc.getDisplayCountry();
//JSON Code
TimeZone tz = TimeZone.getTimeZone(country + "/" + city);