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..不过我在使用的时候设置的最大值从来没出现过