【问题标题】:setInt and getInt values changing Flutter改变 Flutter 的 setInt 和 getInt 值
【发布时间】:2020-05-02 15:42:05
【问题描述】:

我正在捕获执行操作的日期时间并将其设置在 SharedPreferences 中(prefs 是 SharedPreferences 的一个实例),

prefs.setInt('last_action_date', actionDate.millisecondsSinceEpoch);

打印保存的值时,我得到 1579117670122 (2020-01-15 11:47:50.122384) 然后通过它访问它,

prefs.getInt('last_action_date');

但是当我打印该值时,它变成了1579109000664(2020-01-15 09:23:20.664)。

当正在使用的手机与我的服务器处于同一时区时,代码按预期工作,但在这种情况下,当我将手机移回 PST 时,它正在更改保存的值。

非常感谢所有帮助。

【问题讨论】:

    标签: ios iphone flutter dart


    【解决方案1】:

    我建议您保存日期字符串而不是自纪元以来的毫秒数。时区是最糟糕的,要考虑它们是具有挑战性的。但是,如果您保存为 ISO 日期字符串,则时区会直接编码到字符串中。 您可以通过以下方式完成此操作:

    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('my-date-key', new DateTime.now().toIso8601String());
    

    这会将2020-01-15T12:30-02:00 之类的字符串保存到您的共享首选项中,并考虑时区。

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 1970-01-01
      • 2021-08-23
      • 2019-03-21
      • 2020-02-06
      • 2014-01-07
      • 2022-01-09
      • 2021-05-25
      • 2020-12-01
      相关资源
      最近更新 更多