解析字符串在java中的日期时间

时间:2015-02-19 16:37:50

标签: java

我有一个日期时间(字符串),格式如下:2/19/2015 5:25:35 p.m,我想用以下日期格式转换它:Thu Feb 19 5:25:35 p.m. CET 2015我尝试了以下代码:

String sDatePrecedenteExecution  = "19/02/2015 17:30:29";
SimpleDateFormat format = new SimpleDateFormat ("ddd d mmm yyyy HH: mm: ss");
Date date = format.parse (sDatePrecedenteExecution)

但我收到以下错误:

java.text.ParseException: unparseable Date: "2/19/2015 5:30:29 p.m."
Has java.text.DateFormat.parse (DateFormat.java:337)

5 个答案:

答案 0 :(得分:3)

您目前正在使用"输出"格式来读取您的传入日期字符串(2/19/2015 5:25:35 p.m),这就是您看到错误的原因。

您需要指定第二种格式来解析传入的日期字符串,并使用该格式进行解析。它应该是这样的:

SimpleDateFormat inFormat = new SimpleDateFormat ("dd/MM/yyyy HH:mm:ss")
Date date = inFormat.parse(sDatePrecedenteExecution)

请注意,您的输出格式中也存在错误 - m表示分钟,您需要MMM,这是几个月。 Have a look at the docs.

答案 1 :(得分:2)

您的SimpleDateFormat与您输入的格式不匹配。他们应该反映同样的事情。

试试此代码

String parseDate = ""19/02/2015 17:30:29";

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date parsedDate = dateFormat.parse(parseDate);

答案 2 :(得分:1)

您需要将代码更改为......

    String sDatePrecedenteExecution  = "19/02/2015 17:30:29";
    SimpleDateFormat format = new SimpleDateFormat ("dd/mm/yyyy HH:mm:ss");
    try {
        Date date = format.parse (sDatePrecedenteExecution);
        System.out.println(date);
        format = new SimpleDateFormat ("ddd d mmm yyyy HH: mm: ss");
        String str = format.format(date);
        System.out.println(str);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

答案 3 :(得分:0)

尝试这种模式:

SimpleDateFormat format = new SimpleDateFormat ("dd mm yyyy HH:mm:ss");

你犯了错误:"ddd d mmm yyyy HH: mm: ss"

答案 4 :(得分:0)

使用此模式" dd / M / yyyy HH:mm:ss"相反&阅读documentation

SimpleDateFormat format = new SimpleDateFormat ("dd/M/yyyy HH:mm:ss");
  String sDatePrecedenteExecution  = "19/02/2015 17:30:29";
 try{date =format.parse (sDatePrecedenteExecution);
      }catch(Exception ex){//deal with it here}
  System.out.println(date.toString()); //Thu Feb 19 17:30:29 UTC 2015