栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java - 在指定日期、时间段内生成随机时间

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java - 在指定日期、时间段内生成随机时间

需求:在开始日期与结束日期之间,每天在上午区间和下午区间内,各随机生成一条时间(时间间隔为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);
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678764.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号