Концептуально это довольно просто. В зависимости от того, какой язык вы используете, вы сможете конвертировать эти даты в некоторое ссылочное 32- или 64-битное целое число, обычно представляющее секунды с начала эпохи (1 января 1970 года), иначе называемые «Unix time» или миллисекунды с некоторой другой произвольной даты. Просто сгенерируйте случайное 32- или 64-битное целое число между этими двумя значениями. Это должен быть один вкладыш на любом языке.
На некоторых платформах вы можете генерировать время как двойное число (дата - это целая часть, время - это дробная часть, это одна реализация). Тот же принцип применим, за исключением того, что вы имеете дело с числами с плавающей запятой одинарной или двойной точности («плавающие» или «двойные» в C, Java и других языках). Вычтите разницу, умножьте на случайное число (0 <= r <= 1), добавьте время начала и все готово. </p>