java產生指定範圍的隨機日期,java產生範圍

來源:互聯網
上載者:User

java產生指定範圍的隨機日期,java產生範圍

有這樣一個需求:構造一個方法,隨機產生1990-12-31 00:00 00到 2013-12-31 00:00:00之間任意一個時間點。
思路是這樣:在javaAPI中 Date類型和long類型很好轉化,所以我們可以把問題轉化為,求兩個long類型數之間的任意值。
同時需要瞭解java API中的:Math.round(double)  Math.random();  new Date(year,month,day); Calendar。

Math.random() 會隨機產生大於等於0小於1的隨機的double類型。

Math.round(double ) 需要傳入一個double類型,返回最接近這個double類型的long類型。

Calendar 是處理時間的工具類,如Date一樣Calendar的月份也是從0開始計算

具體代碼如下

public static String randomDateBetweenMinAndMax(){     Calendar calendar = Calendar.getInstance();     //注意月份要減去1     calendar.set(1990,11,31);     calendar.getTime().getTime();     //根據需求,這裡要將時分秒設定為0     calendar.set(Calendar.HOUR_OF_DAY, 0);     calendar.set(Calendar.MINUTE, 0);     calendar.set(Calendar.SECOND,0);     long min = calendar.getTime().getTime();;     calendar.set(2013,11,31);     calendar.set(Calendar.HOUR_OF_DAY,0);     calendar.set(Calendar.MINUTE,0);     calendar.set(Calendar.SECOND,0);     calendar.getTime().getTime();     long max = calendar.getTime().getTime();     //得到大於等於min小於max的double值     double randomDate = Math.random()*(max-min)+min;     //將double值舍入為整數,轉化成long類型     calendar.setTimeInMillis(Math.round(randomDate));     return calendar.getTime().toString();   } 

如果要用Date類處理時間,需要注意,年是從1900開始計算所以要減去1900,月是從0開始計算所以要減去1,比如 new Date(2013,10,10) 得到的date對象表示的時間是3913年11月10日。

System.out.println(new Date(2013,10,10)); 

結果是:Mon Nov 10 00:00:00 CST 3913

把上面的問題稍微變一下,已知minDate和maxDate,要求把這個時間區間的每一天放入list。

public static void getDateBetweenMaxAndMin(){     List<Date> list = new ArrayList<Date>();     Calendar calendar = Calendar.getInstance();     calendar.set(2010,10,10);     Date minDate = calendar.getTime(); //最小時間     calendar.set(2013,11,1);     Date maxDate = calendar.getTime();//最大時間     //計算兩個時間點相隔多少天     int totalDays = Ints.checkedCast((maxDate.getTime() - minDate.getTime()) / (1000 * 60 * 60 * 24));     calendar.setTime(minDate);     calendar.set(Calendar.HOUR_OF_DAY,0);     calendar.set(Calendar.MINUTE,0);     calendar.set(Calendar.SECOND,0);     for(int i = 0;i<=totalDays;i++){       if(i!=0){         //天數加1         calendar.add(Calendar.DAY_OF_MONTH,1);       }       list.add(calendar.getTime());     }   } 

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.