Presta atención porque en este tutorial vas a encontrar el arreglo que buscas.Este artículo ha sido probado por nuestros expertos para asegurar la calidad y veracidad de nuestro contenido.
Solución:
import java.util.GregorianCalendar;
public class RandomDateOfBirth
public static void main(String[] args)
GregorianCalendar gc = new GregorianCalendar();
int year = randBetween(1900, 2010);
gc.set(gc.YEAR, year);
int dayOfYear = randBetween(1, gc.getActualMaximum(gc.DAY_OF_YEAR));
gc.set(gc.DAY_OF_YEAR, dayOfYear);
System.out.println(gc.get(gc.YEAR) + "-" + (gc.get(gc.MONTH) + 1) + "-" + gc.get(gc.DAY_OF_MONTH));
public static int randBetween(int start, int end)
return start + (int)Math.round(Math.random() * (end - start));
java.util.Date
tiene un constructor que acepta milisegundos desde The Epoch, y java.util.Random
tiene un método que puede darte un número aleatorio de milisegundos. Querrá establecer un rango para el valor aleatorio según el rango de fechas de nacimiento que desee, pero esos deberían hacerlo.
Muy aproximadamente:
Random rnd;
Date dt;
long ms;
// Get a new random instance, seeded from the clock
rnd = new Random();
// Get an Epoch value roughly between 1940 and 2010
// -946771200000L = January 1, 1940
// Add up to 70 years to it (using modulus on the next long)
ms = -946771200000L + (Math.abs(rnd.nextLong()) % (70L * 365 * 24 * 60 * 60 * 1000));
// Construct a date
dt = new Date(ms);
Fragmento de una solución basada en Java 8:
Random random = new Random();
int minDay = (int) LocalDate.of(1900, 1, 1).toEpochDay();
int maxDay = (int) LocalDate.of(2015, 1, 1).toEpochDay();
long randomDay = minDay + random.nextInt(maxDay - minDay);
LocalDate randomBirthDate = LocalDate.ofEpochDay(randomDay);
System.out.println(randomBirthDate);
Nota: Esto genera una fecha aleatoria entre el 1 de enero de 1900 (incluido) y el 1 de enero de 2015 (exclusivo).
Nota: Se basa en días de época, es decir, días relativos al 1 de enero de 1970 (EPOCH) – significado positivo después de EPOCH, significado negativo antes de EPOCH
También puede crear una pequeña clase de utilidad:
public class RandomDate
private final LocalDate minDate;
private final LocalDate maxDate;
private final Random random;
public RandomDate(LocalDate minDate, LocalDate maxDate)
this.minDate = minDate;
this.maxDate = maxDate;
this.random = new Random();
public LocalDate nextDate()
int minDay = (int) minDate.toEpochDay();
int maxDay = (int) maxDate.toEpochDay();
long randomDay = minDay + random.nextInt(maxDay - minDay);
return LocalDate.ofEpochDay(randomDay);
@Override
public String toString()
return "RandomDate" +
"maxDate=" + maxDate +
", minDate=" + minDate +
'';
y usarlo así:
RandomDate rd = new RandomDate(LocalDate.of(1900, 1, 1), LocalDate.of(2010, 1, 1));
System.out.println(rd.nextDate());
System.out.println(rd.nextDate()); // birthdays ad infinitum
Sección de Reseñas y Valoraciones
No se te olvide compartir este post si te fue útil.