+#define U_MILLIS_PER_YEAR (365.25 * 24 * 60 * 60 * 1000)
+
+UDate DateFormatRoundTripTest::generateDate(UDate minDate)
+{
+ // Bring range in conformance to generateDate() below.
+ if(minDate < (U_MILLIS_PER_YEAR * -(4000-1970))) {
+ minDate = (U_MILLIS_PER_YEAR * -(4000-1970));
+ }
+ for(int i=0;i<8;i++) {
+ double a = randFraction();
+
+ // Range from (min) to (8000-1970) AD
+ double dateRange = (0.0 - minDate) + (U_MILLIS_PER_YEAR + (8000-1970));
+
+ a *= dateRange;
+
+ // Now offset from minDate
+ a += minDate;
+
+ // Last sanity check
+ if(a>=minDate) {
+ return a;
+ }
+ }
+ return minDate;
+}
+