扑朔迷离的世界时间

时间:2020-09-03 07:53:08

标签: api flutter dart

我正在尝试构建具有不同国家时区的世界应用程序。我可以使用api来获取时间,但是在调用api时,该特定实例的时间正在显示,并且不会每分钟更新一次。有什么特殊的方法可以实现这一目标吗?

  void getTime() async{
    Response response =
    await get('http://worldtimeapi.org/api/timezone/Australia/Sydney');
    Map dataAus = jsonDecode(response.body);
    String dateTimeAus = dataAus['datetime'];
    String offsetAus = dataAus['utc_offset'].substring(1, 3);
    DateTime nowAus = DateTime.parse(dateTimeAus);
    nowAus = nowAus.add(Duration(hours: int.parse(offsetAus)));
  }

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,无论如何我的工作可能还有许多其他有效的方法。使用Timer每秒调用一次api。

getTime(String country, continent) async {
    Response response =
        await get('http://worldtimeapi.org/api/timezone/$continent/$country');
    Map data = jsonDecode(response.body);
    String dateTime = data['datetime'];
    String offset = data['utc_offset'].substring(1, 3);
    DateTime time = DateTime.parse(dateTime);
    time = time.add(Duration(hours: int.parse(offset)));
    final timeStr = DateFormat('hh : mm a').format(time);
    return timeStr.substring(0, 10);
  }

  Timer timer;

  @override
  void initState() {
    super.initState();
    setState(() {
      Timer(
        Duration(seconds: 1) - Duration(milliseconds: _localDateTime.second),
        _updateTime,
      );
    });
  }