int milliOffset = stRandom.nextInt(1000) * (stRandom.nextBoolean() ? -1 : 1);
cal.roll(Calendar.MILLISECOND, milliOffset);
int second = stRandom.nextInt(60) * (stRandom.nextBoolean() ? -1 : 1);
cal.roll(Calendar.SECOND, second);
int minute = stRandom.nextInt(60) * (stRandom.nextBoolean() ? -1 : 1);
cal.roll(Calendar.MINUTE, minute);
int hour = stRandom.nextInt(60) * (stRandom.nextBoolean() ? -1 : 1);
cal.roll(Calendar.HOUR_OF_DAY, hour);
int day = stRandom.nextInt(30) * (stRandom.nextBoolean() ? -1 : 1);
cal.roll(Calendar.DAY_OF_MONTH, day);
int month = stRandom.nextInt(12) * (stRandom.nextBoolean() ? -1 : 1);