我需要解析以下日期格式:
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();
它似乎返回了正确的答案。但我不确定它总是如此。
答案 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));