2011-07-13 104 views
0

我正在使用以下代碼以特定格式獲取當前時間,然後想要打印時間戳。日期對象沒有返回正確的時間值

SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd hh:mm:ss.ms"); 
    String formattedDate = dateFormat.format(new Date()); 
    Date curDate = null; 
    try { 
     curDate = dateFormat.parse(formattedDate); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    Log.i(Config.TAG,"curDate...... "+curDate); 

,但是當我看到logcat的輸出「CURDATE ......」正顯示出「週一7月13日4時11分51秒EDT 1970年」 但是在上面的語句分鐘是錯誤的。 但在我的Android設備中,時間顯示爲「04:40 AM」。

我無法弄清楚爲什麼上面的方法捕獲「29」分鐘的延遲。

Pl。讓我知道是做到這一點的正確方法。 讓我知道,如果我錯過了什麼。

回答

2

我懷疑這是你格式化字符串中的「ms」部分,這是令人困惑的事情。我認爲你的意思是「SS」。此外,由於你沒有得到的AM/PM符,你可能要一個24小時制的,而不是12小時:

SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm:ss.SS"); 

(你真的想當年,順便說一句?)

+0

+1,但使用ms(實際上是分和秒)時存在「延遲」仍然很奇怪。我有一個15分鐘的延遲 – Fortega

+0

@Fortega:當你指定「毫秒」你說的「單位數分鐘,然後單個數字秒」。這不是一個延遲,它只是以你真正不想要的方式解析這個值。我認爲應該考慮到「mm」和「ss」已經被指定,但這是一個單獨的問題... –

+0

這確實是一些解析問題。我只是好奇這裏究竟出了什麼問題。有關解釋,請參閱下面的答案... – Fortega

0

添加到喬恩的答案:對於這個問題的解釋:

,如果你嘗試以下方法:

SimpleDateFormat dateFormat = new SimpleDateFormat("ms"); 
String formattedDate = dateFormat.format(new Date()); 
Date curDate = dateFormat.parse(formattedDate); 
System.out.println(formattedDate); 
System.out.println(curDate); 

它打印類似

3632 
Thu Jan 01 00:13:32 CET 1970 

這是因爲解析器威脅'3'爲分鐘,'632'威脅爲秒。
3分632秒是13分32秒。

相關問題