<?php
// Generate a random date between two years using DateTime
function random_date(int $startYear, int $endYear): DateTime {
// Convert start and end years to timestamps
$start = new DateTime("$startYear-01-01");
$end = new DateTime("$endYear-12-31");
// Uniform distribution over the timestamp range
$startTs = $start->getTimestamp();
$endTs = $end->getTimestamp();
$randomTs = rand($startTs, $endTs);
// Convert back to DateTime
$result = new DateTime();
$result->setTimestamp($randomTs);
return $result;
}
$dates = [];
for ($i = 0; $i < 10; $i++) {
$dates[] = random_date(1990, 2030);
}
foreach ($dates as $d) {
echo $d->format("Y-n-j") . "\n";
}
/*
run:
1994-5-31
2009-3-17
1997-3-12
2000-6-3
2002-6-16
2016-10-30
1998-1-9
2023-8-12
1994-11-22
1995-5-30
*/