2

SimpleDateFormat (Java) を使用して日時値を期待値に変換する際に問題があり、期待される形式はMM/yyyyで、2 つの値を 1 つの形式のみに変換したい

  1. MM-yyyy (例: 05-2012)
  2. yyyy-MM 例: 2012-05

出力は 2012 年 5 月です。

次のようなものを実装しました

String expiry = "2012-01";
try {
    result = convertDateFormat(expiry, "MM-yyyy", expectedFormat);
} catch (ParseException e) {
    try {
        result = convertDateFormat(expiry, "yyyy-MM", expectedFormat);
    } catch (ParseException e1) {
        e1.printStackTrace();
    }
    e.printStackTrace();
}

private String convertDateFormat(String date, String oPattern, String ePattern) throws ParseException {
    SimpleDateFormat normalFormat = new SimpleDateFormat(oPattern);
    Date d = normalFormat.parse(date);
    SimpleDateFormat cardFormat = new SimpleDateFormat(ePattern);
    return cardFormat.format(d);
}

現在、戻り値は です6808。理由はわかりません。

親切にこのケースで私を助けてください。

4

1 に答える 1

2

メソッドに追加SimpleDateFormat#setLenient()します。convertDateFormat

private String convertDateFormat(String date, String oPattern, String ePattern) throws ParseException {
    SimpleDateFormat normalFormat = new SimpleDateFormat(oPattern);
    normalFormat.setLenient(false); /* <-- Add this line -- */
    Date d = normalFormat.parse(date);
    SimpleDateFormat cardFormat = new SimpleDateFormat(ePattern);
    return cardFormat.format(d);
}

convertDateFormat日付が間違っていると失敗します。

これについては、こちらで詳しく説明しています: http://eyalsch.wordpress.com/2009/05/29/sdf/

于 2012-11-12T10:58:20.060 に答える