dart - Dart 中的日期倒计时

标签 dart flutter

我正在尝试在我拥有的特定日期创建倒计时,并显示到那时还有多少小时、分钟和秒......

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

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

我试过这个:

@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.. 这真的不是真的......

如何做到这一点?

最佳答案

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

对于格式化,最好使用 Duration 而不是 DateTime。但是您可以像这样更改现有代码:

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

UPD 显示剩余时间的小部件

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

关于dart - Dart 中的日期倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52944180/

相关文章:

flutter - 在导航栏项目之间浏览时如何保持复选框状态

angularjs - 如何修复flutter webview中无法访问视频流(NotAllowedError)以使用html5+webRTC相机api?

flutter - 如何控制 Flutter 的 CircleAvatar 中的图像大小?

flutter - Flutter中使用 'body'后, ' bottomNavigationBar'部分不可见

dart - 如何在 Flutter 中获取当前上下文?

flutter - Flutter 中的 Controller 是什么?

dart - flutter 波纹效果颜色

flutter - 如何点击并将调试文本更改为开发右上角的红色调试横幅?

dart - Flutter - 泛型函数类型定义错误

android-studio - Flutter 升级到 Flutter 1.11.0 (Mac OS) 后的 Flutter 问题