2013-07-08 182 views
2

我有一個TimeStamp'2013-06-24 10:46:11.0',我需要切斷.0部分,所以我所做的就是使用SimpleDateFormat解析它到字符串,然後解析它到日期,第一次轉換是好的,但第二個(字符串到日期)引發java日期時間。以特定格式解析字符串

public void convert(Object object) { 
    Date date; 
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    date = object().getDate(); 
    String formated = format.format(date); 
    try { 
     date = format.parse(formated); 
    } catch (ParseException ex) { 
     Logger.getLogger(DlgConsultaFactura.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

我想到的是這樣的2013年6月24日10時46分十一秒的日期,但我得到的是這個日期週一6月24日10時46分十一秒CDT 2013

任何幫助將不勝感激。謝謝。

+1

@Andeas:他不使用對象,他使用object(),這是一個方法引用。很可能是一個錯誤。 –

+0

@Erik yepp,承認它 - 刪除我的評論......但它看起來錯了:)除非他有一個對象()方法... –

+0

是的。該方法也不會返回任何內容,它會輸入錯誤的輸入參數。我認爲這不可行。 –

回答

2

Mon Jun 24 10:46:11 CDT 20132013-06-24 10:46:11實際上是相同的值。 Mon Jun 24 10:46:11 CDT 2013是根據您的默認語言環境。

你對日期的內部表示和顯示格式感到困惑。

要在2013-06-24 10:46:11中打印,可以再次使用相同的SimpleDateFormat對象。

您可以使用DateFormat#format(Date)打印日期或返回所需格式的字符串表示,即"yyyy-MM-dd HH:mm:ss"。事情是這樣的:

String myDt = format.format(date); 
// 2013-06-24 10:46:11 
+0

但問題是我想在一個日期正確的格式,如果我再次使用SimpleDateformat它將返回一個字符串。 – Blackmore

+0

@Blackmore:請閱讀我答案的第一行。使用'parse'方法的返回值你已經得到一個日期爲'2013-06-24 10:46:11'或'Mon Jun 24 10:46:11 CDT 2013'。兩個值都是相同的。 – anubhava

+0

我想我給自己誤會了,我知道2013-06-24 10:46:11,星期一6月24日10:46:11 CDT 2013是一樣的,問題是返回的格式,當我得到字符串( 2013-06-24 10:46:11)我inmediatley試圖解析它到日期,但當我這樣做時返回一個不同的格式,我需要正確的格式顯示在屏幕上。我非常感謝你的幫助。 – Blackmore

0

不是最好的方式,但如果你只想要日期的字符串表示一個快速簡便的一個...

formated = formated.substring(0, formated.length()-2); 

:)

+0

然後,我如何解析它以保存格式的日期?謝謝您的幫助。 – Blackmore

+1

@Blackmore只有表示日期表示爲String的格式纔有意義。當你將'String'解析爲'Date'時,談論「格式」不再有意義。 –

+0

這是一個很好的解釋。謝謝。 – Blackmore

0

日期格式即的SimpleDateFormat只是根據您的需要格式化日期。

解析返回傳遞的字符串的日期表示(或戳你的情況)。 格式返回傳入的Date對象的字符串表示。

在這兩種情況下,你看到相同的日期正好表示是不同的。

+0

我知道,我想要做的是獲得我的日期的特定格式。謝謝您的幫助。 – Blackmore