生成区间范围内的随机日期

package com.lee.genData;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author paincupid
 * @since 2015.03.06
 */
public class CreateRandomDate {
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//CreateRandomDate.genMulti("2014-03-01 00:00:00", "2015-03-07 00:00:00", 10, format);
		CreateRandomDate.genDateDayByDay("2014-06-01", "2015-03-15", 15, format);
	}
	/**
	 * 在区间范围内每天生成numEachDay个生成日期
	 * @param beginDate 日期的起范围
	 * @param endDate	日期的止范围
	 * @param numEachDay	每天生成多个日期
	 * @param format	生成的格式
	 */
	public static void genDateDayByDay(String beginDate, String endDate,int numEachDay,SimpleDateFormat format) {
		Calendar cal = Calendar.getInstance();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		Date end= null;
		try {
			end=sdf.parse(endDate);
			date = sdf.parse(beginDate);
			while(date.getTime()<=end.getTime()){
				String b = sdf.format(date)+" 00:00:00";
				String e = sdf.format(date)+" 23:59:59";
				for(int i=0;i<numEachDay;i++){
					Date randomDate = randomDate(b,e,format);
					System.out.println(format.format(randomDate));
				}
				cal.setTime(date);
				cal.add(Calendar.DATE, 1);
				date = (Date)cal.getTime();
				//System.out.println((new SimpleDateFormat("yyyy-MM-dd")).format(cal.getTime()));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 在区间范围内生成num个数据,数据是在此区间内随机分布
	 * @param beginDate
	 * @param endDate
	 * @param num
	 * @param format
	 */
	private static void genMulti(String beginDate, String endDate,int num,SimpleDateFormat format) {
		for(int i=0;i<num;i++){
			Date randomDate = randomDate(beginDate,endDate,format);
			System.out.println(format.format(randomDate));
		}
	}
	/**
	 * 在此区间内随机生成一个日期,日期格式按format生成
	 * @param beginDate
	 * @param endDate
	 * @param format
	 * @return
	 */
	private static Date randomDate(String beginDate, String endDate,SimpleDateFormat format) {
		try {
			Date start = format.parse(beginDate);// 开始日期
			Date end = format.parse(endDate);// 结束日期
			if (start.getTime() >= end.getTime()) {
				return null;
			}
			long date = random(start.getTime(), end.getTime());

			return new Date(date);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	private static long random(long begin, long end) {
		long rtnn = begin + (long) (Math.random() * (end - begin));
		if (rtnn == begin || rtnn == end) {
			return random(begin, end);
		}
		return rtnn;
	}

}


转载请注明:http://blog.csdn.net/paincupid/article/details/44102615

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值