【发布时间】:2020-06-07 07:15:27
【问题描述】:
我正在开发一个 Flutter 应用程序作为一个项目,但我不知道如何获得两次之间的差异。我得到的第一个是从 firebase 作为字符串,然后我使用 this:DateTime.parse(snapshot.documents[i].data['from']) 将其格式化为 DateTime,例如它给了我 14:00 。然后,第二个是DateTime.now()。
我尝试了所有方法difference、subtract,但没有任何效果!
请帮助我获得这 2 次之间的确切持续时间。 我需要这个作为倒数计时器。
这是我的代码的概述:
.......
class _ActualPositionState extends State<ActualPosition>
with TickerProviderStateMixin {
AnimationController controller;
bool hide = true;
var doc;
String get timerString {
Duration duration = controller.duration * controller.value;
return '${duration.inHours}:${duration.inMinutes % 60}:${(duration.inSeconds % 60).toString().padLeft(2, '0')}';
}
@override
void initState() {
super.initState();
var d = Firestore.instance
.collection('users')
.document(widget.uid);
d.get().then((d) {
if (d.data['parking']) {
setState(() {
hide = false;
});
Firestore.instance
.collection('historyParks')
.where('idUser', isEqualTo: widget.uid)
.getDocuments()
.then((QuerySnapshot snapshot) {
if (snapshot.documents.length == 1) {
for (var i = 0; i < snapshot.documents.length; i++) {
if (snapshot.documents[i].data['date'] ==
DateFormat('EEE d MMM').format(DateTime.now())) {
setState(() {
doc = snapshot.documents[i].data;
});
Duration t = DateTime.parse(snapshot.documents[i].data['until'])
.difference(DateTime.parse(
DateFormat("H:m:s").format(DateTime.now())));
print(t);
}
}
}
});
}
});
controller = AnimationController(
duration: Duration(hours: 1, seconds: 10),
vsync: this,
);
controller.reverse(from: controller.value == 0.0 ? 1.0 : controller.value);
}
double screenHeight;
@override
Widget build(BuildContext context) {
screenHeight = MediaQuery.of(context).size.height;
return Scaffold(
.............
【问题讨论】:
-
我认为这个问题在这里解释得很好:stackoverflow.com/questions/52713115/…
-
是的,实际上我已经检查过这个答案,这是因为两个日期之间的差异,我尝试使用相同的解决方案,但它没有用
-
你能贴出你试过的代码吗
-
Duration t = DateTime.parse(snapshot.documents[i].data['from']).difference(DateTime.now());结果只是第一个值,即 18:00 -
让我们试试这个:给我 snapshot.documents[i].data['from'] 的值,给我 Datetime.now() 的值和给 t.inSeconds 的值。所以我可以重现这种情况。否则我什么都做不了
标签: flutter datetime dart datetime-format