zoukankan      html  css  js  c++  java
  • 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..不过我在使用的时候设置的最大值从来没出现过

  • 相关阅读:
    Vue(小案例_vue+axios仿手机app)_go实现退回上一个路由
    nyoj 635 Oh, my goddess
    nyoj 587 blockhouses
    nyoj 483 Nightmare
    nyoj 592 spiral grid
    nyoj 927 The partial sum problem
    nyoj 523 亡命逃窜
    nyoj 929 密码宝盒
    nyoj 999 师傅又被妖怪抓走了
    nyoj 293 Sticks
  • 原文地址:https://www.cnblogs.com/inthecloud/p/13432050.html
Copyright © 2011-2022 走看看