0

我需要在java中随机化一个时间。

如果现在是24/2/2021 13:56:13,那么我需要在23/2/2021 13:56:13和之间随机化一个时间24/2/2021 13:56:13。我对 Java 中的随机函数不熟悉,所以我可能需要一些帮助。感谢您的关注。

4

1 回答 1

3

然后以LocalDateTime.now()0 到 86400 之间的随机秒数返回时间

int randomSeconds = new Random().nextInt(3600 * 24);
LocalDateTime anyTime = LocalDateTime.now().minusSeconds(randomSeconds);
System.out.println(anyTime);

一般解决方案

  1. 定义期间的开始dates和结束

  2. 以秒为单位计算差异并获得该范围内的随机 int

  3. 使用以下两种方式之一计算随机日期:

    • 从头开始并添加随机的秒数
    • 从头开始并删除随机的秒数
LocalDateTime periodStart = LocalDateTime.now().minusDays(1);
LocalDateTime periodEnd = LocalDateTime.now();

int randomSeconds = new Random().nextInt((int) periodStart.until(periodEnd, ChronoUnit.SECONDS));

//LocalDateTime anyTime = periodStart.plusSeconds(randomSeconds);
LocalDateTime anyTime = periodEnd.minusSeconds(randomSeconds);
于 2021-01-08T09:55:24.510 回答