2010-04-22 81 views
2

如何獲得字符串,格式爲:2008-06-02 00:00:00.0並將其轉換爲:02-Jun-2008Java中的日期轉換

我可以以某種方式把原始的字符串,將其轉換爲Date對象,然後用格式化來獲得最終輸出(而非解析字符串自己)?謝謝!

+0

查詢 '可不知何故,我......' 是正確的。進一步調查這條道路。 – KevinDTimm 2010-04-22 16:04:34

+1

沒有人提到過JodaTime。這必須是第一個。 – 2010-04-22 16:08:34

+0

@Paul:他在評論中提到他不想使用外部庫:)這對我來說已經足夠了。 – BalusC 2010-04-22 16:12:00

回答

7

根據模式,您可以使用SimpleDateFormatStringDate對象之間進行轉換,反之亦然。點擊API鏈接,你會看到模式被詳細解釋。 4位數的年份可以用yyyy表示,3個字符的月份縮寫可以用MMM等表示。

首先,你需要解析第一格式的StringDate對象:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); 
Date date = sdf1.parse(inputString); 

然後,你需要格式Date爲第二格式的String

SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH); 
String outputString = sdf2.format(date); 

請注意,您還需要考慮Locale以得到t他將以英文打印月份,否則將使用平臺的默認語言環境翻譯月份。

+0

對於outputString行,不應該是'sdf2.format(date)'? – justkt 2010-04-22 16:08:25

+0

@justkt,在早期的編輯中已經修復:)'Ctrl + C Ctrl + V'是邪惡的。 – BalusC 2010-04-22 16:15:03

+0

對不起,我錯過了編輯。 – justkt 2010-04-22 16:21:35

0

使用SimpleDateFormat類的2個實例。一個用於將輸入字符串轉換爲日期和第二個以將日期轉換回字符串,但是採用另一種格式。

這裏是一個example of using SimpleDateFormat

0
DateFormat startFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S"); 
DateFormat endFormat = new SimpleDateFormat("dd-MM-yyyy"); 
String outputString = null; 
try { 
    Date date = startFormat.parse(inputString); 
    outputString = endFormat.format(date); 
} catch(ParseException pe) { 
    throw new IllegalArgumentException(inputString + " is not properly formated.", pe); 
} 
0

你絕對可以像其他人推薦的那樣使用SimpleDateFormat類。

另一個建議,如果它適用於你的情況。如果您從sql查詢中獲取這些數據,則還可以使用to_char()方法在查詢中對其進行格式化。例如:TO_CHAR(列名, 'DD-MON-YYYY')