jodaを使用してxmlに日付を設定しています。私はpoiを使用してExcelシートから日付を取得し、次のコードを使用してxmlに設定しています:
DateTimeFormatter fmt = DateTimeFormat.forPattern("EEE, dd MMM YYYY HH:mm:ss zzz")
.withLocale(Locale.getDefault());
DateTime dt = fmt.parseDateTime(summaryObj.getCreateDateTime().toString());
DateTimeFormatter fmt1 = DateTimeFormat.forPattern("dd/MM/yyyy");
//get current date only
DateTime currentDate = new DateTime();
int day = currentDate.getDayOfMonth();
int month = currentDate.getMonthOfYear();
int year = currentDate.getYear();
DateTime dt1 = fmt1.parseDateTime(String.valueOf(day)+"/"+ String.valueOf(month)+"/"+String.valueOf(year));
listOfPossibleEntities.add("DateOfCreation");
gc.setTime(dt1.toDate());
globalContextObj.setDateOfCreation(DatatypeFactory.newInstance()
.newXMLGregorianCalendar(gc));
summaryObj.getCreateDateTime().toString() は、"Sat Sep 16 05:30:00 IST 2006" のような文字列を生成します。関数 parseDateTime() の例外が発生しています。
java.lang.IllegalArgumentException: Invalid format: "Sat Sep 16 05:30:00 IST 2006" is malformed at " Sep 16 05:30:00 IST 2006"
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:866)
at scanning.ScanningEngine.getGlobalContext(ScanningEngine.java:2633)
最初は、joda の代わりに直接 date を使用していましたが、REST を使用して xml を json として返すときに、jackson デシリアライザーの例外に遭遇しました。これが、java.util.Date デシリアライゼーションの jackson にバグがあるという投稿をいくつか見たので、joda に切り替えることにした理由です。
無効な形式の例外が発生する理由を誰かが知っている場合は、お知らせください。ありがとう。