2013-09-24 175 views
0

我正在運行下面編寫的程序,但不是以mm/dd/yyyy hh:mm格式打印,而是以正常日期格式(即日期日期和時間)打印以日期格式獲得格式化日期而不是字符串

SimpleDateFormat sdf = new SimpleDateFormat("mm/dd/yyyy hh:mm"); 
Date date = sdf.parse(sdf.format(Calendar.getInstance().getTime())); 

原因我這樣做是因爲現有的方法接受的日期格式參數,所以我需要在上述日期對象發送給它。

請指出錯誤或建議一些其他的選擇。 謝謝

+1

我不明白。您正在從「日曆」格式化「日期」,然後將其解析回「日期」。爲什麼不'date日期= Calendar.getInstance()。getTime()'? –

回答

7

日期對象沒有格式。 Date類是圍繞單個長整數的包裝,即從時代開始的毫秒數。你不能「格式化」一個日期,只能是一個字符串。內部傳遞日期/日曆,並在需要顯示日誌/日曆時對其進行格式化,記錄日誌/日曆或以其他方式將其返回給用戶。

+0

擴大一點...您不能格式化日期 - 時間對象(在這種情況下爲'java.util.Date'),但您可以生成該日期時間信息的字符串表示。通過使用格式化程序來完成。對於j.u.Date&.Calendar,意思是'SimpleDateFormat'類。但java.util.Date&.Calendar出了名的麻煩;避免它們。而是使用[Joda-Time](http://www.joda.org/joda-time/)或Java 8中的新java.time包。使用Joda-Time,使用[DateTimeFormatter](http: //www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormatter.html)通過DateTimeFormat工廠獲得的對象。 –

1

將格式更改爲MM/dd/yyyy。每月由資本M.

檢查下面的網址爲有效格式

http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

+0

我並不低調,因爲你確實在他的代碼中發現了一個錯誤,但我認爲這根本不涉及他的問題。 –

+0

我剛回答他的問題。你是對的,日期或日曆對象本身沒有任何標準格式。 –

1

你的格式化工作得很好(除了mm和MM的bug)表示。您從日期獲得格式化的字符串,然後通過解析格式化的字符串從日期創建副本:

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm"); 
Date now = Calendar.getInstance().getTime(); 
String formattedNow = sdf.format(now); // == "09/24/2013 01:59" 
Date now2 = sdf.parse(formattedNow); // == now 
+0

它仍然沒有解決問題.. :( – user1472629

+1

然後請詳細說明問題,因爲我不知道你的問題實際是什麼。例如什麼是「現有的方法」,例如什麼時間/如何獲得日期以錯誤的格式打印? –