Когда я получаю разницу между endDate.millisecondsSinceEpoch и startDate.millisecondsSinceEpoch, это дает мне результат плюс 2 часа? - PullRequest
0 голосов
/ 31 января 2019

Я хочу получить разницу между endDate и startDate

int endDate = DateTime.parse("2019-01-31 09:35:00").millisecondsSinceEpoch;

int startDate = DateTime.parse("2019-01-31 09:30:00").millisecondsSinceEpoch;

Тогда я получаю разницу

int distance = endDate - startDate;

После этого я конвертирую расстояние в DateTime

DateTime newTime = DateTime.fromMillisecondsSinceEpoch(distance);

Результат

 02:05:00

Ожидаемый результат

00:05:00

enter image description here

Где ошибка?

1 Ответ

0 голосов
/ 31 января 2019

Расчет даты / времени в местном часовом поясе подвержен ошибкам.
Сначала преобразовать в UTC:

  int endDate =
      DateTime.parse("2019-01-31 09:35:00").toUtc().millisecondsSinceEpoch;
  int startDate =
      DateTime.parse("2019-01-31 09:30:00").toUtc().millisecondsSinceEpoch;
  int distance = endDate - startDate;

  DateTime newTime = DateTime.fromMillisecondsSinceEpoch(distance, isUtc: true);
  print('result: $newTime');

Результат: 1970-01-01 00: 05: 00.000Z

Но, как уже упоминалось в комментарии ниже вашего вопроса, Duration будет лучше для этой цели.

...