簡體   English   中英

使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM