Flutter 计算两个日期之间相差多少天

1.计算两个日期大小
class CountDay{
  static int daysBetween(DateTime a, DateTime b, [bool ignoreTime = false]) {
    if (ignoreTime) {
      int v = a.millisecondsSinceEpoch ~/ 86400000 -
          b.millisecondsSinceEpoch ~/ 86400000;
      if (v < 0) return -v;
      return v;
    } else {
      int v = a.millisecondsSinceEpoch - b.millisecondsSinceEpoch;
      if (v < 0) v = -v;
      return v ~/ 86400000;
    }
  }
}

 

上面的定义了三个参数,其中DateTime a和b是必传,ignoreTime是可选参数.

这个bool型的参数是让你选择是否要计算两个日期的小时,默认为false,如果有需要,就传个true进去.

其中 millisecondsSinceEpoch是将时间转化为时间戳.时间戳是指从1970-01-01T00:00:00Z(UTC)起的毫秒数.

~/ 这个方法的意思是取整,因为我们方法名是int,返回其他类型会报错,可以根据需求自己修改,这里有一篇关于dart语法的文章

 

使用方法如下:

CountDay.daysBetween(DateTime.parse('2020-06-01'), DateTime.parse("2020-06-05"),false)

 

2.在flutter中生成区间随机数

在C#中有个 Random.Next(int min,int max);的方法,dart也有这样一个方法,但是坑爹的是,它只能传入一个最大值,也就是没办法确认最小值,但是我们可以这么写

  final _random=new Random();
  int next(int min,int max)=>min + _random.nextInt(max-min);

这个代码应该不难看懂吧.也就是自己定义一个next的方法,传入最小值和最大值.在nextInt中,我们是将最大值减去最小值.

为什么要这么做呢,举例说明一下:

int i= next(5,10);

如上述代码,我们传入5和10.那么在nextInt中的最大值就是5(生成的随机数就是在 0-5区间,5+0~5,永远不会大于10,所以我们设置的最大值10是生效的).然后我们在使用最小值来加上这个随机数最大值为5;返回的值就永远不会大于10..不过我在使用的时候设置的最大值从来没出现过

 

posted @ 2020-08-04 11:13  在云端i  阅读(998)  评论(0编辑  收藏  举报