java生成指定范围的随机日期

  

有这样一个需求:构造一个方法,随机生成1990-12-31 0 00到1990-12-31就是之间任意一个时间点。
  思路是这样:在javaAPI中日期类型和长类型很好转化,所以我们可以把问题转化为,求两个长类型数之间的任意值。
  同时需要了java API中解的:Math.round(双),math . random (),,新日期(年、月、日);日历。

  

math . random()会随机生成大于等于0小于1的随机的两类型。

  

数学。轮(double)需要传入一个双类型,返回最接近这个双类型的长类型。

  

日历是处理时间的工具类,如日期一样的日历月份也是从0开始计算

  

具体代码如下
  

        公共静态字符串randomDateBetweenMinAndMax () {   日历日历=Calendar.getInstance ();//注意月份要减去1   calendar.set (1990、11、31);   .getTime calendar.getTime () ();//根据需求,这里要将时分秒设置为0   calendar.set(日历。HOUR_OF_DAY, 0);   calendar.set(日历。分钟,0);   calendar.set (Calendar.SECOND 0);   长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);   .getTime calendar.getTime () ();   长max=calendar.getTime () .getTime ();//得到大于等于最小值小于最大的值的两倍   双randomDate=math . random() *(极大极小)+分钟;//将双值舍入为整数,转化成长类型   calendar.setTimeInMillis (Math.round (randomDate));   .toString返回calendar.getTime () ();   }      

如果要用日期类处理时间,需要注意,年是从1900年开始计算所以要减1900年去,月是从0开始计算所以要减去1,比如新的日期(2013、10、10)得到的日期对象表示的时间是3913年11月10日。
  

        system . out。println(新日期(2013、10、10));   之前      

结果是:

  

把上面的问题稍微变一下,已知minDate和maxDate,要求把这个时间区间的每一天放入列表。
  

        公共静态孔隙getDateBetweenMaxAndMin () {   List列表=new ArrayList ();   日历日历=Calendar.getInstance ();   calendar.set (2010、10、10);   日期minDate=calendar.getTime ();//最小时间   calendar.set(1) 2013年,11日;   日期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;我+ +){   如果(我!=0){//天数加1   calendar.add (Calendar.DAY_OF_MONTH, 1);   }   list.add (calendar.getTime ());   }   }   之前      

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

java生成指定范围的随机日期