如何在java中随机化昨天和今天本地DateTime之间的时间?

问题描述

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

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

解决方法

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

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

通用解决方案

  1. 定义句点的开始 dates 和结束

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

  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);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...