Dart DateTime.difference () работает по-разному для Android 7.1.1 и новее - PullRequest
0 голосов
/ 16 апреля 2020

Запуск следующего кода на эмуляторе с Android 7.1.1, я получаю 29. Тот же код на Android 9, я получаю 30.

DateTime start = DateTime(2020, 9, 30);
DateTime end = DateTime(2020, 10, 30);

end.difference(start).inDays;

Как это исправить?

1 Ответ

0 голосов
/ 16 апреля 2020

Как и было предложено @ julemand101, я начал искать что-либо, связанное с проблемами перехода на летнее время, и понял, что разница составила 719 часов в Android 7.1.1 и 720 в Android 9. Он округлялся до 29 (вместо 30) разница в днях.

Проверяя date_time.dart, я обнаружил следующее:

  /**
   * Constructs a [DateTime] instance specified in the UTC time zone.
   *
   * ```
   * var moonLanding = new DateTime.utc(1969, 7, 20, 20, 18, 04);
   * ```
   *
   * When dealing with dates or historic events prefer to use UTC DateTimes,
   * since they are unaffected by daylight-saving changes and are unaffected
   * by the local timezone.
   */

Таким образом, преобразование даты в ut c до вычисления разницы работало для меня нормально.

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