如何解决使用JAVA生成大于当前日期的随机日期
我想使用 JAVA 生成一个应该大于当前日期 (date2
) 的随机日期 (date1
)
为了实现这一点,我尝试遵循 do-while 循环,但它无法正常运行。
我怎样才能让它工作?或者有没有更好的方法来获得想要的结果?
P.S.在 JAVA 方面不太好,所以非常感谢任何支持!
public static void main(String[] args) throws ParseException {
do {
Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(""+String.valueOf(c.get(Calendar.YEAR))+"-"+String.valueOf(c.get(Calendar.DAY_OF_MONTH))+"-"+String.valueOf(c.get(Calendar.DATE))+"");
Date date2 = sdf.parse(""+String.valueOf(c.get(Calendar.YEAR))+"-"+createRandomIntBetween(1,12)+"-"+createRandomIntBetween(1,28)+"");
}
while (date1.compareTo(date2) < 0);
}
public static int createRandomIntBetween(int start,int end) {
return start + (int) Math.round(Math.random() * (end - start));
}
解决方法
以下解决方案将生成一个从明天和一年开始的随机日期
Random randomDays = ThreadLocalRandom.current();
LocalDateTime date = LocalDateTime.now().plusDays(randomDays.nextInt(365) + 1);
根据您想要的日期范围,您当然可以将 bound 参数更改为 nextInt
。
日期和时间在java中只是一个int,我们可以简单的使用生成随机int的思想来生成2个日期之间的日期。
public static Date randomDateBetween(Date startDate,Date endDate) {
long startMillis = startDate.getTime();
long endMillis = endDate.getTime();
long randomMillis = ThreadLocalRandom
.current()
.nextLong(startMillis,endMillis);
return new Date(randomMillis);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。