为什么我不能在 datetime Flutter 项目中添加偏移时间?

Why can't I add offset hours in datetime Flutter project?

我现在尝试向我的日期时间对象添加偏移小时数, 但它没有显示实际时间的增加时间。 这是我在 android 工作室的 flutter 项目。

    void getTime() async {
    Response response = await
    get('http://worldtimeapi.org/api/timezone/Asia/Karachi');
    Map data = jsonDecode(response.body);
    String datetime = data['datetime'];
    String offset = data['utc_offset'].substring(1,3);

    print(offset);
    DateTime now = DateTime.parse(datetime);
    now.add(Duration(hours: int.parse('offset')));
    print(now);
    }
    @override
    void initState() {
    super.initState();
    getTime();
    }

这是我得到的结果: Screenshot of the output

您的代码有两个问题:

  1. 您应该将 offset 传递给 int.parse 而不是 'offset'
  2. add 是对 DateTime 对象的不可变操作。它不会更改 DataTime 对象,而是 returns 一个新对象。

试试这个:

DateTime dateTimeAfterOffset = DateTime.parse(datetime).add(
  Duration(
    hours: int.parse(offset),
  ),
);
```

我找到了解决方案。耶耶耶!

  void getTime() async {

    //Make the request
    Response response = await get('http://worldtimeapi.org/api/timezone/Asia/Karachi');
    Map data = jsonDecode(response.body);
    print(data);


    //Get properties from data
    String datetime = data['datetime'];
    String offset = data['utc_offset'].substring(1,3);
    //print(datetime);
    print(offset);

    //create DateTime Object
    DateTime now = DateTime.parse(datetime);
    now = now.add(Duration(hours: int.parse(offset)));
    print(now);
  }

  @override
  void initState() {

    super.initState();
    getTime();
  }