2014-11-23 39 views
0

我有以下代碼生成一個隨機日期,但我不知道如何以DD-MON-YY(例如12-NOV-12)的形式顯示它,這發生在成爲日期的SQL標準格式(即最終我計劃將這些數據與JDBC一起傳輸到Oracle數據庫中)。從日期獲取DD-MON-YY格式的字符串

GregorianCalendar gc = new GregorianCalendar(); 

gc.set(gc.YEAR, randBetween(1900, 2015)); //randBetween creates a random number between the two 

gc.set(gc.DAY_OF_YEAR, randBetween(1, gc.getActualMaximum(gc.DAY_OF_YEAR))); 

//Mysterious formatting needed here 

String s = //date would go here in the DD-MON-YY format 

反正點的存在我已經嘗試了許多方法來格式化,我已經得到了它一直DD-MM-YY(例如12-12-12)最接近的一次。我想知道是否有人知道用一種簡單/簡單的方式來實現我的目標,而不是訴諸原始漫長的方式(如果/開關案例陳述)。

回答

0

使用SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy"); 
String s = sdf.format(gc.getTime()); 
System.out.println(s); 

這是在javadoc中的一部分,你正在尋找:

Letter Date or Time Component    Presentation  Examples 
    M  Month in year (context sensitive)  Month  July; Jul; 07 

:如果有一個模式字母的數量爲3個或更多,該月被解釋爲文本;否則,它被解釋爲一個數字。

  • 字母M產生上下文相關的月份名稱,例如名稱的嵌入形式。如果已使用構造函數SimpleDateFormat(String, DateFormatSymbols)或方法setDateFormatSymbols(DateFormatSymbols)明確設置了DateFormatSymbols,則使用由DateFormatSymbols給出的月份名稱。
  • 字母L生成獨立形式的月份名稱。
+0

謝謝,我沒有意識到大寫格式有不同的影響:D – Yokhen 2014-11-23 20:52:59

+0

不客氣。 – 2014-11-23 20:53:32

+0

哦,等等,仍然顯示月份的數字,而不是我正在查找的三字母格式。 除非這種格式可以在不使用'TO_DATE()'(而我不知道它)的SQL中用於'DATE'類型,那麼這將使我回到方塊1:/ – Yokhen 2014-11-23 20:56:16