Как найти разницу между двумя объектами временных меток в Dart?

#flutter #dart

#flutter #dart

Вопрос:

Итак, я сохраняю Dart DateTime в firebase, который firebase хранит как Timestamp тип.

Когда я считываю данные обратно в свое приложение flutter dart, я получаю результат обратно в формате, приведенном ниже. Ниже приведено то, что я получаю обратно, когда читаю его из firebase.

 Start -> Timestamp(seconds=1604593808, nanoseconds=95000000)
End -> Timestamp(seconds=1604593816, nanoseconds=165000000)
  

Я хотел бы получить способ получить разницу между временными метками. Таким образом, длительность истекла с момента начала до окончания. Было бы идеально, если бы кто-нибудь знал, как я могу получить разницу и в качестве объекта datetime? Как я мог этого добиться?

Комментарии:

1. выполните End — Start. это должно сработать или преобразовать оба в миллисекунды, а затем вычесть.

Ответ №1:

во-первых, вам нужно преобразовать результат в DateTime формат.

 var data1 = Timestamp(seconds=1604593808, nanoseconds=95000000);
var data2 = Timestamp(seconds=1604593816, nanoseconds=165000000);

DateTime dateTime1 = DateTime.parse(data1.toDate().toString());
DateTime dateTime2 = DateTime.parse(data2.toDate().toString());
  

Затем вы используете встроенный DateTime метод:

 dateTime1.difference(dateTime2).inDays; // or in whatever format you want.
  

Ответ №2:

Вы можете преобразовать временную метку в DateTime использование toDate() метода, а затем сравнить две даты, используя difference метод DateTime класса, пример:

 var berlinWallFell = new DateTime.utc(1989, DateTime.november, 9);
var dDay = new DateTime.utc(1944, DateTime.june, 6);

Duration difference = berlinWallFell.difference(dDay);
assert(difference.inDays == 16592);
  

Ответ №3:

Подход 1

  final date1 = DateTime(1996, 08, 04);
 final date2 = DateTime.now();
 final difference = date2.difference(date1).inDays;
  

Подход 2

 DateTime date1 = DateTime.parse('2019-9-11'); 
DateTime date2 = DateTime.now();
final result = date2.difference(date1).inDays;
print('$result');
  

Ответ №4:

Я думаю, вы можете выяснить, как получить время из вашей временной метки (не работал с этим типом данных). Тогда все, что вам нужно сделать, это

 timeDiff = timeEnd.difference(timeStart).inMilliseconds;