2016-07-21 3 views
1

Я пытаюсь извлечь следующий DateTime из XML с использованием промежуточного программного обеспечения под названием Oracle BAM, но это не имеет значения. Я получаю следующий вывод о журнале:Недопустимый формат datetime в java

Invalid DateTime specified: 2016-07-21T11:25:00.000+01:00 
java.text.ParseException: Unparseable date: "2016-07-21T11:25:00.000+01:00" 
    at java.text.DateFormat.parse(DateFormat.java:366) 
    ... 

Я прочитал документацию и формат в точности, как они хотят. Что мне не хватает?

+0

'DateFormat.setLenient (true)'? Как комментарий вы, кажется, предполагаете, что миллисекунды .000 не в вашем формате. –

ответ

0

Вы можете попробовать это простой формат даты valdation

public Date validateDateFormat(String dateToValdate) { 
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HHmmss"); 
//To make strict date format validation 
formatter.setLenient(false); 
Date parsedDate = null; 
try { 
    parsedDate = formatter.parse(dateToValdate); 
    System.out.println("++validated DATE TIME ++"+formatter.format(parsedDate)); 

} catch (ParseException e) { 
    //Handle exception 
} 
return parsedDate;} 
+0

Я нашел проблему, и мне нужно удалить часть миллисекунд, но на самом деле не знаю, как это сделать. – Elsendion

+0

Регулярное выражение 'replace (" \. [0-9] + "," ")' должно выполнять эту работу. –

0

Вы можете просто разобрать эту дату, как показано ниже.

package com.test; 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 

public class Sample { 
    public static void main(String[] args) throws ParseException { 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX"); 
     System.out.println(sdf.parse("2016-07-21T11:25:00.000+01:00")); 
    } 
} 
Смежные вопросы