18

Java 1.4 を実行します。

この方法があります:

static SimpleDateFormat xmlFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

public static Date fromXml(String xmlDateTime) {
    ParsePosition pp = new ParsePosition(0);
    return xmlFormatter.parse(xmlDateTime, pp);
}

xmlDateTime = 2013-08-22T16:03:00たとえばどこ。これは機能していましたが、突然停止しました!

次の例外が発生します。

java.lang.ArrayIndexOutOfBoundsException: -1
at java.text.DigitList.fitsIntoLong(DigitList.java:170)
at java.text.DecimalFormat.parse(DecimalFormat.java:1064)
at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1381)
at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1159) 

さまざまな日付形式を使用して、単体テストでこれを再現しようとしました。

2013-08-22T16:03:00
2013-08-22 16:03:00

しかし、運が悪い!何か案は?

4

4 に答える 4

1

Commons Lang 3.x FastDateParser と FastDateFormat を使用してみてください。これらのクラスはスレッド セーフであり、SimpleDateFormat より高速です。また、SimpleDateFormat と同じフォーマット/解析パターン仕様もサポートしています。

于 2014-03-19T18:34:48.163 に答える
1

毎回インスタンスを作成する簡単な方法、グローバル変数の代わりにローカル/スコープ変数、それは私にとってはうまくいきます

private void test {
    SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(pattern, Locale.ENGLISH);
    // Do somethings
}
于 2018-10-17T08:05:36.807 に答える