gpt4 book ai didi

date - 在 Dart/Flutter 中创建 DateTime 对象时如何指定时区?

转载 作者:IT王子 更新时间:2023-10-29 06:35:36 35 4
gpt4 key购买 nike

Dart?flutter 似乎不允许在创建 DateTime 对象时指定时区(例如:“澳大利亚/悉尼”或“美国/底特律”)。要么使用本地时区,要么指定 UT。

有人知道解决方法吗?

有 Dart 包 TimeZone,但它似乎无法在 flutter 应用程序中使用。

参见 https://pub.dartlang.org/packages/timezone对于我所指的包。

编辑:timezone 包在 Flutter 中确实有效,需要一些设置。请参阅下面 Richard Heap 的回答。

最佳答案

你必须施展魔法才能让 package:timezone 在 flutter 中工作。

提取您需要的任何数据文件(有 3 个:default、all 和 2010-2020)并将其移动到您的 flutter assets 文件夹中。 (我用的是2018c_2010-2020.tzf,在一个分支中可用。)

将其作为 Assets 添加到 pubspec.yaml 中:

  assets:
- assets/2018c_2010-2020.tzf

然后在启动时加载该文件(例如从顶级 StatefulWidget 的 initState)并使用它来初始化数据库。

ByteData tzf = await rootBundle.load('assets/2018c_2010-2020.tzf');
initializeDatabase(tzf.buffer.asUint8List());
...
Location newYork = getLocation('US/Eastern');

我没试过,但如果您将其标记为异步,您甚至可以从 main 加载它。

我还注意到我必须克隆最新的分支,正如我在我的 pubspec 中看到的那样

  timezone:
path: ../../dart/source/timezone

...但看起来您只需要从 pub 中获取 0.5.0-dev-2

dependencies:
timezone: "^0.5.0-dev-2"

关于date - 在 Dart/Flutter 中创建 DateTime 对象时如何指定时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50780124/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com