gpt4 book ai didi

java - 在特定范围内生成随机 LocalTime

转载 作者:搜寻专家 更新时间:2023-11-01 02:36:07 26 4
gpt4 key购买 nike

我有两个 LocalTime 对象:

LocalTime time1 = LocalTime.of(8, 0, 0);
LocalTime time2 = LocalTime.of(15, 0, 0);

我想在这两个对象之间生成一个随机的 LocalTime 对象。

我已经尝试使用 rand.nexInt()

Random rand = new Random();

int hours = rand.nextInt((time2.getHour() - time1.getHour()) + 1) + time1.getHour();
int minutes = rand.nextInt((time2.getMinute() - time1.getMinute()) + 1) + time1.getMinute();
int seconds = rand.nextInt((time2.getSecond() - time1.getSecond()) + 1) + time1.getSecond();

LocalTime random = LocalTime.of(hours,minutes,seconds);

但只会生成像 9:00:00 这样的完整时间。

最佳答案

首先检查time2是否在time1之后。
然后,您可以将 LocalTime 实例转换为表示一天中秒数的 long(LocalTime.toSecondOfDay() 方法就是这样做的),然后在两个 LocalTime 实例的一天中的秒数之间选择一个随机数,并使用 LocalTime.ofSecondOfDay() 创建随机 LocalTime

LocalTime time1 = LocalTime.of(8, 0, 0);
LocalTime time2 = LocalTime.of(15, 0, 0);
int secondOfDayTime1 = time1.toSecondOfDay();
int secondOfDayTime2 = time2.toSecondOfDay();
Random random = new Random();
int randomSecondOfDay = secondOfDayTime1 + random.nextInt(secondOfDayTime2-secondOfDayTime1);
LocalTime randomLocalTime = LocalTime.ofSecondOfDay(randomSecondOfDay);

请注意,在 Random.next(int bound) 中,bound 值是唯一的。因此,如果重要,您应该添加一秒钟以包括可能范围内的最后一个值,例如:

int randomSecondOfDay = 
secondOfDayTime1 + random.nextInt(secondOfDayTime2-secondOfDayTime1 + 1);

关于java - 在特定范围内生成随机 LocalTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380940/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com