0

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

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();

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

4

1 回答 1

2

问题在于Swhich 表示毫秒。它将毫秒数添加到日期,但您有 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));
于 2013-10-13T08:36:41.307 回答