2013-05-29 121 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。

相关问题