无法解释的日期:“2013-05-16 09:35:31.0”

时间:2014-07-15 06:22:44

标签: java java.util.date

我在将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);

有人可以让我知道如何解析这个。

6 个答案:

答案 0 :(得分:3)

您的ParseExceptionString)因为完全有效而无法面对任何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