#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;