方式一:
public class GenLocalDateUtil {
public static Date localDate2Date(LocalDate localDate) {
if (null == localDate) {
return null;
}
ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
return Date.from(zonedDateTime.toInstant());
}
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();
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 {
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();
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);
}
}
}