Generating Random Date time in java (joda time)

后端 未结 5 1570
心在旅途
心在旅途 2021-01-04 21:32

Is it possible to generate a random datetime using Jodatime such that the datetime has the format yyyy-MM-dd HH:MM:SS and it should be able to generate two random datetimes

5条回答
  •  自闭症患者
    2021-01-04 22:18

    This follows quite strictly what you asked for (except for the corrected format).

    Random random = new Random();
    
    DateTime startTime = new DateTime(random.nextLong()).withMillisOfSecond(0);
    
    Minutes minimumPeriod = Minutes.TWO;
    int minimumPeriodInSeconds = minimumPeriod.toStandardSeconds().getSeconds();
    int maximumPeriodInSeconds = Hours.ONE.toStandardSeconds().getSeconds();
    
    Seconds randomPeriod = Seconds.seconds(random.nextInt(maximumPeriodInSeconds - minimumPeriodInSeconds));
    DateTime endTime = startTime.plus(minimumPeriod).plus(randomPeriod);
    
    DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
    
    System.out.println(dateTimeFormatter.print(startTime));
    System.out.println(dateTimeFormatter.print(endTime));
    

    If you run this, you'll note that you'll get outrageous values for years, but that's simply the consequence of generating a random DateTime over the entire possible range of DateTime (or Date for that matter). But the same technique of limiting the end time to a certain range can be applied to the start time if you want.

提交回复
热议问题