产生指定范围内的LocalDate对象

方式一:

public class GenLocalDateUtil {
	// LocalDate转Date
	public static Date localDate2Date(LocalDate localDate) {
		if (null == localDate) {
			return null;
		}
		ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
		return Date.from(zonedDateTime.toInstant());
	}

	// Date转LocalDate
	public static LocalDate date2LocalDate(Date date) {
		if (null == date) {
			return null;
		}
		return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
	}

	public static LocalDate randomLocalDate(String min, String max) {
		String[] mins = min.split("-");
		String[] maxs = max.split("-");

		LocalDate localDateMin = LocalDate.of(Integer.parseInt(mins[0]), Integer.parseInt(mins[1]),
				Integer.parseInt(mins[2]));
		LocalDate localDateMax = LocalDate.of(Integer.parseInt(maxs[0]), Integer.parseInt(maxs[1]),
				Integer.parseInt(maxs[2]));

		Date dateMin = localDate2Date(localDateMin);
		Date dateMax = localDate2Date(localDateMax);
		
		long timeMin = dateMin.getTime();//获取日期所对应的数字
		long timeMax = dateMax.getTime();

		double random = Math.random(); // [0,1)
		long digit = (long) (random * (timeMax - timeMin + 1) + timeMin);
		Date date = new Date(digit);
		LocalDate res = date2LocalDate(date);
		return res;
	}

	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			LocalDate localDate = randomLocalDate("1999-9-21", "2019-9-21");
			System.out.println(localDate);
		}
	}

}

方式二:

public class GenLocalDateUtil {
	// Date转LocalDate
	public static LocalDate date2LocalDate(Date date) {
		if (null == date) {
			return null;
		}
		return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
	}

	public static LocalDate randomLocalDate(String min, String max) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date dateMin;
		Date dateMax;
		try {
			dateMin = sdf.parse(min);
			dateMax = sdf.parse(max);
			long timeMin = dateMin.getTime();// 获取日期所对应的数字
			long timeMax = dateMax.getTime();

			double random = Math.random(); // [0,1)
			long digit = (long) (random * (timeMax - timeMin + 1) + timeMin);
			Date date = new Date(digit);
			LocalDate res = date2LocalDate(date);
			return res;
		} catch (ParseException e) {
			e.printStackTrace();
		}

		return null;
	}

	public static void main(String[] args) {
		for (int i = 0; i < 10; i++) {
			LocalDate localDate = randomLocalDate("1999-9-21", "2019-9-21");
			System.out.println(localDate);
		}
	}

}
发布了253 篇原创文章 · 获赞 666 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/lianghecai52171314/article/details/103891182
今日推荐