因此,我将Dart DateTime
存储在Firebase中,而Firebase将其存储为Timestamp
类型。
当我将数据读回我的flutter dart应用程序时,我将获得以下格式的结果。 以下是从Firebase读取后得到的内容。
Start -> Timestamp(seconds=1604593808, nanoseconds=95000000)
End -> Timestamp(seconds=1604593816, nanoseconds=165000000)
我想要一种获取时间戳之间差异的方法。因此,持续时间从开始时间到结束时间已过去。如果有人知道我也可以作为日期时间对象获得差异,那将是完美的吗?我怎么能做到这一点?
答案 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;