日期格式

时间:2013-10-13 08:25:26

标签: java date formatting

我需要解析以下日期格式:

Aug  6, 2013 18:34:16.990423000

所以我尝试了以下内容:

Date startTime;
SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy kk:mm:ss.S", Locale.ENGLISH);
startTime = df.parse("Aug  6, 2013 18:34:16.990423000");

但是mydate.toString给了我完全的其他日期!

它给了我"Sun Aug 11 11:27:43 IDT 2013"

是否与时区有关?

顺便说一下,当我表演时

ts = returnTime.getTime() - startTime.getTime();

它似乎返回了正确的答案。但我不确定它总是如此。

1 个答案:

答案 0 :(得分:2)

问题在于S,表示毫秒。它添加了该日期的毫秒数,但您有990423000毫秒。您可能希望省略格式的.S或首先截断输入,如下例所示:

Date startTime;
String dateString = "Aug  6, 2013 18:34:16.990423000";
SimpleDateFormat df = new SimpleDateFormat("MMM dd, yyyy kk:mm:ss.SSS", Locale.ENGLISH);
startTime = df.parse(dateString.replaceFirst("\\.(\\d{3})\\d*$", ".$1"));
System.out.println(new SimpleDateFormat("MMM dd, yyyy kk:mm:ss.SSS").format(startTime));