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..不過我在使用的時候設置的最大值從來沒出現過

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM