问题描述
如果现在时间是 24/2/2021 13:56:13
,那么我需要在 23/2/2021 13:56:13
和 24/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);
通用解决方案
-
定义句点的开始
dates
和结束 -
以秒为单位计算差异并获得该范围内的随机整数
-
使用以下两种方法之一计算随机日期:
- 从头开始并添加随机的秒数
- 从最后开始移除随机的秒数
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);