2017-08-23 11 views
0
String formatA ="yyyy-MM-dd'T'HH:mm:ss'Z'"; 
String formatB = "dd/MM/yyyy HH:mm:ss.SSS"; 
try { 
    XMLGregorianCalendar gregFmt = DatatypeFactory.newInstance().newXMLGregorianCalendar(new SimpleDateFormat(formatB).format(new Date())); 
    System.out.println(gregFmt); 
} catch (DatatypeConfigurationException e) { 
}; 

XMLGregorianCalendarの日付を整形しようとしています。 上記のコードフォーマットウェルフォーマット"yyyy-MM-dd'T'HH:mm:ss'Z'"XMLGregorianCalendarの日付形式 'dd/MM/yyyy HH:mm:ss.SSS'

ためしかしformatB dd/MM/yyyy HH:mm:ss.SSSのためにそれは誤り

java.lang.IllegalArgumentException 

はそれを修正する方法についてのアドバイスを行いますスローされます。どうもありがとうございます!

ログ

Exception in thread "main" java.lang.IllegalArgumentException: 23/08/2017 16:13:04.140 
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parseAndSetYear(XMLGregorianCalendarImpl.java:2887) 
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parse(XMLGregorianCalendarImpl.java:2773) 
at com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl.<init>(XMLGregorianCalendarImpl.java:435) 
at com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar(DatatypeFactoryImpl.java:536) 
at test.test.main(test.java:19) 

line19は、上記のコードの行4、である 'たXMLGregorianCalendar gregFmt ...'

+0

あなたの巨大なラインのどの部分がこの例外を投げていますか? –

+0

これは、コード 'newXMLGregorianCalendar'のこの部分で、フォーマットdd/MM/yyyy HH:mm:ss.SSSの日付を取ることができません。ログに上記のように追加されました – RahlSK

+0

タイムゾーンを日付形式で追加しようとします。 sdf.setTimeZone(TimeZone.getTimeZone( "UTC")); –

答えて

2

the XML specsに記述されて受け入れ、formatBあなたがしようとしていると異なっているnewXMLGregorianCalendar(string)フォーマット使用する。

+0

javadocから取得したと思われるリンクが間違ったアンカーにリンクしています。字句表現は、https://www.w3.org/TR/xmlschema-2/#dateTime-lexical-representationで指定されています。 – SpaceTrucker

+0

確かに私はjavadocからそれを得ました、確かに間違ったアンカーでした。変更ありがとうございます。 – bracco23