飞镖日期倒计时 [英] date countdown in dart

查看:104
本文介绍了飞镖日期倒计时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

am尝试在我拥有的特定日期创建一个倒计时,并显示到那时还剩下多少小时,分钟和几秒钟。

am trying to create a countdown on specific date i have and display how many hours, minutes and seconds left until then ..

例如,我想设置计数器日期为:2018年10月25日,星期四,上午7:14:05

for example i want to set the counter date to: Thursday, October 25, 2018 7:14:05 AM

,我想为用户显示..剩余时间:hh:mm:ss直到10月25日...

and i want to display for the user.. remaining time: hh:mm:ss till 25 october ...

我尝试了此操作:

@override
void initState() {

new CountdownTimer(new Duration(milliseconds: 1540451645), new Duration(seconds: 1)).listen((data) {
  print('Remaining time: ${data.remaining.inSeconds}');
  print(new DateTime.now().millisecondsSinceEpoch);
  print(DateTime.fromMillisecondsSinceEpoch(data.remaining.inSeconds));
  var format = new DateFormat("hh:mm:ss");
  var dateString = format.format(DateTime.fromMillisecondsSinceEpoch(data.remaining.inSeconds));
  print(dateString);
});
super.initState();
}

,但结果是:03:25:40 ..事实并非如此是的...

but the result is: 03:25:40.. which is really not true ...

该怎么做?

推荐答案

首先所有-存在错误:您必须使用 data.remaining.inMilliseconds 而不是 data.remaining.inSeconds

First of all - there is error: you have to use data.remaining.inMilliseconds instead of data.remaining.inSeconds

对于格式设置,最好使用Duration而不是DateTime。但是您可以更改现有代码,例如:

For formatting it'll be better to use Duration instead of DateTime. But you can change your existing code like:

var format = new DateFormat("mm:ss");
var dateString = '${data.remaining.inHours}:${format.format(DateTime.fromMillisecondsSinceEpoch(data.remaining.inMilliseconds))};
print(dateString);

UPD
小部件,用于显示剩余时间

UPD Widget for showing remaining time

int estimateTs = DateTime(2018, 11, 5, 7, 15, 30).millisecondsSinceEpoch; // set needed date

....

StreamBuilder(
                      stream: Stream.periodic(Duration(seconds: 1), (i) => i),
                      builder: (BuildContext context, AsyncSnapshot<int> snapshot) {
                        DateFormat format = DateFormat("mm:ss");
                        int now = DateTime
                            .now()
                            .millisecondsSinceEpoch;
                        Duration remaining = Duration(milliseconds: estimateTs - now);
                        var dateString = '${remaining.inHours}:${format.format(
                            DateTime.fromMillisecondsSinceEpoch(remaining.inMilliseconds))}';
                        print(dateString);
                        return Container(color: Colors.greenAccent.withOpacity(0.3),
                          alignment: Alignment.center,
                          child: Text(dateString),);
                      });

这篇关于飞镖日期倒计时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆