2014-01-22 107 views
-1

我有兩個Date對象,我試圖格式化爲從MM/DD/YYYY格式到"yyyy-mm-dd HH:mm:ss"格式。在java中格式化日期

我使用目前的做法是,先用格式的SimpleDateFormat日期,這將返回兩個Strings,然後我有這個字符串轉換回日期以獲得格式化最終Date對象。

所以我想知道是否有一個更簡單的方法來更改日期對象格式,而不用在很多步驟?

謝謝

回答

1

格式是不相關的。 Date只是表示Unix紀元以來的毫秒數。

請記住,Date沒有格式的概念,它並不在意。

您應該簡單地格式化你需要的任何格式程序的Date對象...

例如...

Date date = new Date(); 
System.out.println(date); 
System.out.println(DateFormat.getDateTimeInstance().format(date)); 
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(date)); 
System.out.println(new SimpleDateFormat("yyyy MMMM EE").format(date)); 
System.out.println(new SimpleDateFormat("EEEE MMMM yyyy").format(date)); 
System.out.println(date); 

輸出...

Wed Jan 22 11:55:18 EST 2014 
22/01/2014 11:55:18 AM 
22/01/2014 
2014 January Wed 
Wednesday January 2014 
Wed Jan 22 11:55:18 EST 2014 

注意如何第一併且最後的值不會改變。 Date沒有格式的內部概念,這是格式化程序的責任。

例如,如果我把String價值22/01/2014和使用SimpleDateFormat

Date date = new SimpleDateFormat("dd/MM/yyyy").parse("22/01/2014"); 

解析回一個Date然後輸出的date值...

System.out.println(date); 

將輸出的東西像...

Wed Jan 22 00:00:00 EST 2014 

格式已丟失。這將需要使用適當的格式化程序來改變顯示內容

+0

如果我在這裏正確理解你,你的意思是,如果我有例如Date1對象,無論我如何格式化它的日期,它將保持相同的原始它以前的格式。所以要使用格式化日期,我必須從SimpleDateFormat或DateFormatter中獲取字符串輸出...正確嗎? – MChan

+0

取一個'String',將其解析爲'Date'(對輸入'String'使用合適的格式化程序)。一旦你有了Date,你就可以將它傳遞給你想要的任何格式化器,並且它不會以任何方式改變Date對象。看看我在問題末尾鏈接的示例 – MadProgrammer

+0

您提供的示例假定我最初擁有帶日期的字符串,但情況並非如此。我最初有一個日期對象與我需要格式化的日期...有道理? – MChan