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

  • 相关阅读:
    [Erlang05]gen_server怎么去写eunit?
    [Erlang04]为什么有了rpc还有net_kernel:connect/1?
    [Erlang03]Erlang有哪些好用的静态分析工具?
    [SIP01]SIP Header Fields里面各字段用途
    [SIP00]SIP 概念总结
    [Erlang00]:gen_server:reply/2
    Makefile教程
    Linux 环境下开发 STM32
    Ubuntu 18.04 + ROS Melodic + TurtleBot3仿真
    Ubuntu系统鼠标不能点击
  • 原文地址:https://www.cnblogs.com/inthecloud/p/13432050.html
Copyright © 2020-2023  润新知