2017-04-04 1 views
-1

のJava日付形式の問題、私はコードの下に使用して日付04年04月17に変換しようとすると:のJava日付形式YYYYの問題にYYを変換

私は04年04月0017の代わりに、04日 - 4月を持っ
 DateFormat informat= new SimpleDateFormat("dd-MMM-yy"); 
     DateFormat outformat= new SimpleDateFormat("dd-MMM-yyyy"); 
     System.out.println(outformat.format(informat.parse("04-Apr-17"))); 

-2017。

私は多くの方法を試しましたが、良い解決策はありません。

助けてください、ありがとう!

+3

私にとってはうまく動作します – Jens

+0

あなたの観察された動作を再現することはできません。あなたのコンピュータの(あるいはJVMの)デフォルトロケールは何ですか? '04-Apr-7'では' 04-Apr-0007'を手に入れましたが、17は2017になります。 –

+0

ジョヴァンニ・モンテネグロはまだコメントするほどの評判を得ていないので、コードが動作するというデモへのリンクです(https://i.stack.imgur.com/cHiZh.png)。 –

答えて

0

私はこの問題の理由を知りました。この日付変換をJSF環境で使用していました。&は、Webページからユーザーが入力した日付のパターンをチェックしていました。 ユーザーが "dd-MMM-yy"パターンを渡しているときに、サポートされている日付パターンリストの日付を解析する以下のコードがあります。

Date date = null; 
    boolean isDateValid = false; 
    for (String pattern : patterns) { 

     DateFormat df = new SimpleDateFormat(pattern); 
     try { 
      date = df.parse(value); 

      String newDateString = df.format(date); 
      System.out.println(newDateString); 

      isDateValid = true; 
      break; 

     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 

    System.out.println("Date : " + date); 

したがって、ユーザは "DD-MMM-YY" パターンの日付が、 "DD-MMM-YY" パターンはまた、以下のコードでは "DD-MMM-YYYY" パターンによって解析さを提供する場合:

DateFormat df = new SimpleDateFormat(pattern); 
    date = df.parse(value); 

これが原因で、私は04-Apr-0017の代わりに04-Apr-0017を取得していました。

関連する問題