0

将字符串转换为日期时出现 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);

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

4

6 回答 6

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

于 2014-07-15T06:49:05.267 回答
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

于 2014-07-15T06:24:21.960 回答
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");

这是我得到的输出,

2013 年 5 月 16 日星期四 09:35:31 IST

于 2014-07-15T06:42:30.680 回答
0

在阅读SimpleDateFormat的 javadoc并查看您提供的时间戳时,我注意到您还提供了毫秒。

所以你得到一个 dateformat 字符串,如下所示:

formatter = new SimpleDateFormaT("yyyy-MM-d HH:mm:ss.S");
于 2014-07-15T06:28:24.603 回答
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 中日期格式化程序的所有日期或时间组件模式,请参见此处。

于 2014-07-15T06:29:49.207 回答
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

于 2014-07-15T06:32:26.410 回答