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。

10年积累的成都网站设计、成都做网站、外贸网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有松阳免费网站建设让你可以放心的选择与我们合作。

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(); 
  } 

分享题目:java生成指定范围的随机日期-创新互联
路径分享:http://scjbc.cn/article/eccgc.html

其他资讯