我捕获了执行某个操作的日期时间,并在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时,在这种情况下,它将更改保存的值。
非常感谢您的帮助。
2条答案
按热度按时间fdbelqdn1#
我建议您保存日期字符串,而不是从纪元开始的毫秒数。时区是最糟糕的,并且很难考虑到它们。但是,如果您保存为ISO日期字符串,时区将直接编码到字符串中。您可以通过以下方式完成此操作:
这会将
2020-01-15T12:30-02:00
之类的字符串保存到您的共享首选项中,并考虑到时区。vcirk6k62#
使用parse()方法将此字符串解析回DateTime对象。