需求:在开始日期与结束日期之间,每天在上午区间和下午区间内,各随机生成一条时间(时间间隔为10分钟)。
★参数
1.开始日期:startDate
2.结束日期:endDate
3.上午区间:
(1)上午开始时间:amStartTime
(2)上午结束时间:amEndTime
4.下午区间:
(1)下午开始时间:pmStartTime
(2)下午结束时间:pmEndTime
5.间隔时间:randomTime
1.获得指定日期范围内的每一天
List getRandomDateList(Date beginDate, Date endDate) throws ParseException {
List resList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date tmp = beginDate;
Calendar calendar = Calendar.getInstance();
calendar.setTime(beginDate); // 获得开始日期
// 上午 11:00:00 ~ 12:30:00
String amStart = " 11:00:00";
String amEnd = " 12:30:00";
// 下午 18:30:00 ~ 22:00:00
String pmStart = " 18:30:00";
String pmEnd = " 22:00:00";
// 获得开始日期到结束日期的日期
while (tmp.getTime() < endDate.getTime()) {
tmp = calendar.getTime();
String format = sdf.format(tmp);
calendar.add(Calendar.DAY_OF_MONTH, 1); // 天数+1
// 拼装生成上午的时间 YYYY-MM-dd HH:mm:ss
String amStartFormat = format + amStart; // 上午开始时间
Date amStartDate = sdf2.parse(amStartFormat);
String amEndFormat = format + amEnd; // 上午结束时间
Date amEndDate = sdf2.parse(amEndFormat);
// 上午开始~结束时间中,以10分钟为间隔,随机获取一条时间
Date amRandomDate = getRandomDate(amStartDate, amEndDate);
// 添加到返回数组中
resList.add(amRandomDate);
// 生成下午的时间 YYYY-MM-dd HH:mm:ss
String pmStartFormat = format + pmStart; // 上午开始时间
Date pmStartDate = sdf2.parse(pmStartFormat);
String pmEndFormat = format + pmEnd; // 上午结束时间
Date pmEndDate = sdf2.parse(pmEndFormat);
// 下午开始~结束时间中,以10分钟为间隔,随机获取一条时间
Date pmRandomDate = getRandomDate(pmStartDate, pmEndDate);
// 添加到返回数组中
resList.add(pmRandomDate);
}
return resList;
}
2.根据所传日期,在指定时间范围内,获得随机时间(10分钟间隔)
public Date getRandomDate(Date beginTime, Date endTime) {
Integer randomTime = 10;
List randomList = new ArrayList<>();
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTime(beginTime); //获得当前日期 YYYY-MM-dd HH:mm:ss
Date tmp2 = beginTime;
while (tmp2.getTime() < endTime.getTime()) {
tmp2 = calendar.getTime();
// String format = sdf.format(tmp2);
// System.out.println(format);
// 分钟 + 10
calendar.add(Calendar.MINUTE, randomTime);
randomList.add(tmp2);
}
// 随机取集合中一位返回
Random random = new Random();
int index = random.nextInt(randomList.size());
return randomList.get(index);
}