2016-07-21 11 views
1

Oracle BAMというミドルウェアを使用してXMLから次のDateTimeを抽出しようとしていますが、それは問題ではありません。私は、ログに次の出力取得してい :Javaで無効なdatetime形式

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")); 
    } 
} 
関連する問題