如何在 Flutter 中使用 OpenWeather API 的时区属性获取任何城市/国家的当前时间?

Posted

技术标签:

【中文标题】如何在 Flutter 中使用 OpenWeather API 的时区属性获取任何城市/国家的当前时间?【英文标题】:how to get the current time for any city/country by using timezone property from OpenWeather API in Flutter? 【发布时间】:2020-12-14 20:46:13 【问题描述】:

我通过使用 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 属性或其他属性来获取该城市的当前时间。可能吗?怎么样?

【问题讨论】:

这能回答你的问题吗? How to convert DateTime into different timezones?,看看这个问题中提到的包 【参考方案1】:

使用您从 API 获得的timezone 获取城市当前时间的方法如下:

DateTime.now().add(Duration(seconds: timezone - DateTime.now().timeZoneOffset.inSeconds))

你会从这里得到一个DateTime 对象。

【讨论】:

【参考方案2】:

要解决您的问题,您必须将您的国家代码转换为国家名称,然后使用 JSON 代码来解决您的问题。

 TextView textView = findViewById(R.id.textView);

    Locale loc = new Locale("","JP");
    String country = loc.getDisplayCountry();

    //JSON Code

    TimeZone tz = TimeZone.getTimeZone(country + "/" + city);

【讨论】:

城市变量是您将从 JSON 代码中获取的城市名称,然后将其作为字符串输入。

以上是关于如何在 Flutter 中使用 OpenWeather API 的时区属性获取任何城市/国家的当前时间?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter-如何在flutter的整个应用程序生命周期中将数据保存在内存中?

如何在 Flutter 中使用 GestureDetector 隐藏 appBar?

如何在 Flutter 的原生 C++ 中使用 OpenCV 4(2021 年)(支持 Flutter 2.0)? [关闭]

如何在flutter中使用rootBundle加载图片?

如何在 Dart / Flutter 中使用另一个文件的函数?

在 Flutter 中,我们如何使用 Firebase Messaging onBackgroundMessage 创建通知,使用flutter_local_notifications?