ios setInt和getInt值更改抖动

slsn1g29  于 2022-12-01  发布在  iOS
关注(0)|答案(2)|浏览(99)

我捕获了执行某个操作的日期时间,并在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时,在这种情况下,它将更改保存的值。
非常感谢您的帮助。

fdbelqdn

fdbelqdn1#

我建议您保存日期字符串,而不是从纪元开始的毫秒数。时区是最糟糕的,并且很难考虑到它们。但是,如果您保存为ISO日期字符串,时区将直接编码到字符串中。您可以通过以下方式完成此操作:

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

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

vcirk6k6

vcirk6k62#

使用parse()方法将此字符串解析回DateTime对象。

main(List args) {

  //DateTime myDatetime = DateTime.parse("2022-11-30 17:19:35");
  DateTime myDatetime = DateTime.parse("Datetime");
  print(myDatetime.toIso8601String());
}

相关问题