使用 JAVA 生成大于当前日期的随机日期
Generate random date greater than current date using JAVA
我想生成一个随机日期 (date2
),它应该大于当前日期 (date1
) 使用 JAVA
为了实现这一点,我尝试了以下 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);
}
我想生成一个随机日期 (date2
),它应该大于当前日期 (date1
) 使用 JAVA
为了实现这一点,我尝试了以下 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);
}