如何在Dart中找到两个时间戳对象之间的差异?

时间:2020-11-06 11:21:46

标签: flutter dart

因此,我将Dart DateTime存储在Firebase中,而Firebase将其存储为Timestamp类型。

当我将数据读回我的flutter dart应用程序时,我将获得以下格式的结果。 以下是从Firebase读取后得到的内容。

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

我想要一种获取时间戳之间差异的方法。因此,持续时间从开始时间到结束时间已过去。如果有人知道我也可以作为日期时间对象获得差异,那将是完美的吗?我怎么能做到这一点?

3 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

您可以使用toDate()方法将时间戳转换为DateTime,然后使用DateTime类的difference方法比较两个日期,例如:

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

答案 2 :(得分:-1)

我想您可以弄清楚如何从时间戳中获取时间(尚未使用此数据类型)。然后您要做的就是

timeDiff = timeEnd.difference(timeStart).inMilliseconds;