![](/img/trans.png)
[英]How to check user entered date is greater than 32 days from current date in java
[英]Generate random date greater than current date using JAVA
我想使用 JAVA 生成一個隨機日期( date2
),它應該大於當前日期( date1
)
為了實現這一點,我嘗試遵循 do-while 循環,但它無法正常運行。
我怎樣才能得到這個工作? 還是有更好的方法來獲得預期的結果?
PS 在 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);
根據您想要的日期范圍,您當然可以將綁定參數更改為nextInt
。
Date and Time 只是 java 中的一個 int,我們可以簡單地使用生成隨機 int 的思想來生成兩個日期之間的日期。
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.