2013-02-20 472 views
2

觸發我試圖創建一個算法會做以下一些未來事件:機器人 - 隨機生成的日期和時間

  • 產生一定量的格式隨機日期的「yyyy-mm-dd
  • 以格式「hh:mm:ss」生成每個日期的時間時間應該在9到22小時之間(24h)
  • 將這些項目添加到字符串數組中。 1完整陣列條目看起來像「2013-02-25 09:45:23

我沒有明確的想法如何執行此操作。有什麼建議麼?

+0

生成RA ndom在期望的範圍內變長,並將它們轉換爲'new Date(long)'的日期並根據需要進行格式化? – Henry 2013-02-20 09:41:24

回答

6

精確解你需要什麼..

public class RandomDateTime { 

    public static void main(String[] args) { 

     SimpleDateFormat dfDateTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss",Locale.getDefault()); 
     int year = RandomDateTime.randBetween(1900, 2013);// Here you can set Range of years you need 
     int month = RandomDateTime.randBetween(0, 11); 
     int hour = RandomDateTime.randBetween(9, 22); //Hours will be displayed in between 9 to 22 
     int min = RandomDateTime.randBetween(0, 59); 
     int sec = RandomDateTime.randBetween(0, 59); 


     GregorianCalendar gc = new GregorianCalendar(year, month, 1); 
     int day = RandomDateTime.randBetween(1, gc.getActualMaximum(gc.DAY_OF_MONTH)); 

     gc.set(year, month, day, hour, min,sec); 

     System.out.println(dfDateTime.format(gc.getTime())); 

    } 


    public static int randBetween(int start, int end) { 
     return start + (int)Math.round(Math.random() * (end - start)); 
    } 
} 

你可以找到SimpleDateTime的更多的用途:http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

+0

'randBetween'方法給出的邊界值只有間隔內值的一半概率。 – Henry 2013-02-20 10:06:08

1

這個想法很簡單。您可以使用Date(milis)構造函數和隨機數生成器生成隨機日期和時間。你必須找到下限和上限,並從中間隨機選擇一個數字。

格式化日期和時間非常簡單,您可以使用DateFormat類來完成此操作。

3

你所能做的就是利用隨機函數得到隨機時間戳,我的意思是,你可以很容易地獲得隨機的長值,然後該時間戳轉換爲日期對象這樣

Java simple Timestamp to Date conversion