Значения setInt и getInt меняются Flutter - PullRequest
0 голосов
/ 15 января 2020

Я фиксирую дату и время выполнения действия и задаю его в 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 в этом случае это изменение значения, которое было сохранено.

Вся помощь очень ценится.

1 Ответ

2 голосов
/ 15 января 2020

Я бы порекомендовал вам сохранить строку даты вместо миллисекунд с начала эпохи. Часовые пояса - худшие, и их сложно объяснить. Если вы сохраните как строку даты ISO, часовой пояс будет закодирован прямо в строку. Вы можете выполнить sh с помощью следующего:

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

Это сохранит строку типа 2020-01-15T12:30-02:00 в ваших общих настройках с учетом часового пояса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...