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

  • 相关阅读:
    centos 7 安装Telnet并设为开机自启动、开防火墙端口
    cenos 7 中firewalld开放服务端口
    来自鸟哥的lftp客户端软件使用方法
    关闭Linux无用端口
    家用路由器网络设置DMZ区
    Linux中退出循环命令
    shell函数基本概念
    inode节点用尽处理
    xfs格式化、ext4格式化并指定inode区别
    dd备份命令使用
  • 原文地址:https://www.cnblogs.com/inthecloud/p/13432050.html
Copyright © 2011-2022 走看看