2013-05-29 127 views
2

我用下面的SimpleDateFormatJava的日期格式不解析我與我的SimpleDateFormat正確

DateFormat dateFormat = new SimpleDateFormat("dd/MMMMM/yyyy:HH:mm:ss.SSSSS"); 

然後讀我的TIMESTAMP WITH,其中timestamp是這樣的29 /月/ 2013的字符串:09 :12:06.80652和this.timestamp是日期

this.timestamp = dateFormat.parse(timeStamp); 

我不明白爲什麼,當我去輸出時間戳和使用它的時間戳比較,時代在更改─鑑於上述這一天,我的輸出是

Timestamp before dateFormat: 29/May/2013:09:12:06.80625 
    Timestamp after dateFormat: Wed May 29 09:13:26 EDT 2013 

我不在乎EDT和其他格式,我不明白的是時間從9:12:06到9:13:26。

謝謝!

+8

80625ms實際上給1min20sec更使9點12分06秒> 9點13分26秒 –

+1

@AlexandreLavoie這是一個答案真的。 – assylias

+0

哦...和谷歌告訴我,我處理微秒時,我自己。 Gaah!雖然謝謝! – winepretzel

回答

4

您的格式以毫秒爲單位進行微秒,因此您的80625以分鐘和秒(1分20秒= 80000毫秒)轉換。

您應該截短微秒並刷新3個最不重要的數字。

這將工作:

DateFormat oDateFormat = new SimpleDateFormat("dd/MMMMM/yyyy:HH:mm:ss.SSS"); 
String sDate = "29/May/2013:09:12:06.80625"; 
long lMicroseconds; 

// Computing milliseconds from microseconds since it the number of digits can change 
lMicroseconds = Long.valueOf(sDate.substring(sDate.indexOf('.') + 1,sDate.length())); 
sDate = sDate.substring(0,sDate.indexOf('.')) + "." + (lMicroseconds/1000); 

System.out.println(oDateFormat.parse(sDate)); 
+0

完美,謝謝! – winepretzel

0

80625正好1分20秒多。所以這就是你如何得到改變,它只是增加了毫秒。

1

你忘了考慮毫秒,80625毫秒或多或少是80次,或1分20秒。

9時12分06秒+ 1:20 => 9時13分26秒

如果要處理它們,你可以看看的CalendarTimeUnit API。

相關問題