JAVA中如何生成特定范围内的随机日期?我已经看到 如何在 Java 中生成特定范围内的随机整数? 用于生成随机数的链接。在 JAVA 中是否有类似/其他类型的方法来生成随机日期?
原文由 Ashish Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
JAVA中如何生成特定范围内的随机日期?我已经看到 如何在 Java 中生成特定范围内的随机整数? 用于生成随机数的链接。在 JAVA 中是否有类似/其他类型的方法来生成随机日期?
原文由 Ashish Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试这个
LocalDate startDate = LocalDate.of(1990, 1, 1); //start date
long start = startDate.toEpochDay();
System.out.println(start);
LocalDate endDate = LocalDate.now(); //end date
long end = endDate.toEpochDay();
System.out.println(start);
long randomEpochDay = ThreadLocalRandom.current().longs(start, end).findAny().getAsLong();
System.out.println(LocalDate.ofEpochDay(randomEpochDay)); // random date between the range
原文由 Saravana 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
鉴于您的问题不清楚,我希望您尝试生成具有给定范围的随机
java.util.Date
。请注意
java.util.Date
包含日期+时间信息。Date
在Java中用从EPOCH开始的毫秒表示。因此,做你想做的最简单的方法是,给定 d1 和 d2 是Date
,并且 d1 < d2 (在伪代码中):如果它实际上是您要生成的“日期”(没有时间),通常由
LocalDate
表示(在 Java 8+ 中,或使用 JODA Time)。这很简单,假设 d1 和 d2 是
LocalDate
,d1 < d2
(伪代码):