我在将String转换为日期时遇到Parse异常。 这是我的代码:
String str_date = commonAttrMap.get("updateDate").toString();//2013-05-16 09:35:31.0
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("yyyy-MM-d HH:mm:ss");
date = formatter.parse(str_date);
System.out.println(date);
productDetailForSolr.setUpdateDate(date);
有人可以让我知道如何解析这个。
答案 0 :(得分:3)
您的ParseException
(String
)因为完全有效而无法面对任何2013-05-16 09:35:31.0
。
date = formatter.parse("2013-05-16 09:35:31.0");
//Assign date to the date Not format
它会返回给定String
生成的日期,当您打印日期时,您将获得默认格式。要应用您的格式,您必须使用format
方法。
formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
System.out.println(formatter.format(date));//date after parsing
如果您尝试使用不同的日期格式解析Unparseable date: "2013-05-10 09:35:31.0"
,例如String
,则只会获得yyyy/MM/dd
。
答案 1 :(得分:1)
如果结尾的0表示毫秒,请尝试:
formatter = new SimpleDateFormat("yyyy-MM-d HH:mm:ss.S");
有关完整参考:请查看SimpleDateFormat javadoc:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
答案 2 :(得分:1)
确保使用java.util.Date而不是java.sql.Date。以下代码适用于jre6和jre7。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParseDate {
public static void main(String[] args) {
String str_date = "2013-05-16 09:35:31.0";
DateFormat formatter;
Date date;
try {
formatter = new SimpleDateFormat("yyyy-MM-d HH:mm:ss");
date = formatter.parse(str_date);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
如果要分析毫秒,还可以使用以下格式
formatter = new SimpleDateFormat("yyyy-MM-d HH:mm:ss.S");
这是我得到的输出,
Thu May 16 09:35:31 IST 2013
答案 3 :(得分:0)
在阅读SimpleDateFormat的javadoc并查看您提供的时间戳时,我注意到您还提供了毫秒数。
所以你得到一个dateformat字符串,如下所示:
formatter = new SimpleDateFormaT("yyyy-MM-d HH:mm:ss.S");
答案 4 :(得分:0)
由于您的日期与"2013-05-16 09:35:31.0"
类似,因此您需要使用模式"yyyy-MM-d HH:mm:ss.S"
解析它(此处S
为毫秒)。
这就是你要做的事情:
formatter = new SimpleDateFormat("yyyy-MM-d HH:mm:ss.S");
有关Java中日期格式化程序的所有日期或时间组件模式,请参阅here。
答案 5 :(得分:0)
我在Eclipse中运行了这个代码..它运行得非常好!!
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParseDate {
public static void main(String[] args) throws ParseException {
String str_date = "2013-05-16 09:35:31.0";
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("yyyy-MM-d HH:mm:ss");
date = formatter.parse(str_date);
System.out.println(date);
}
}
产出是:Thu May 16 09:35:31 ICT 2013
我正在使用Java jre7