1

ローカライズする必要がある日付があります。以下のコードは5/1/12 19:06:34 を返しますが、必要な結果は05/01/12 19:06:34 です。これを管理する方法を教えてください。

  private String localizeDate(String date){ //Format is 2012-05-01 19:30:49

    Locale loc = DataContextHolder.getDataContext().getLocale();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", loc);

    Date parsed=null;
    try {
        parsed = formatter.parse(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, loc);

    String localizedDate = df.format(parsed) + " " + date.substring(11, 13) + ":"
            + date.substring(14, 16) + ":"
            + date.substring(17, 19);

    return localizedDate;
}
4

3 に答える 3

3

特定の要素の連続するパターン文字の数を減らすことで、先行ゼロを回避できます。連続する複数のパターン文字は、日付フォーマッターに、少なくともその値を表現する文字数が必要であることを伝えます。

あなたの例では、次のようにして問題を解決する必要があります。

new SimpleDateFormat("y-M-d H:m:s", loc);

詳細についてはSimpleDateFormatドキュメントを参照してください。

わかりやすくするために、次の例を参照してください。

SimpleDateFormat a = new SimpleDateFormat("yyyyy-MMMM-dddd HHH:mmmm:sssss");
SimpleDateFormat b = new SimpleDateFormat("y-M-d H:m:s");

System.out.println(a.format(new Date())); 
// Prints 02012-June-0005 012:0027:00026
System.out.println(b.format(new Date()));
// Prints 12-6-5 12:27:26
于 2012-06-05T16:25:15.543 に答える
0

適切な日付フォーマッタを選択する必要があります。こちらのドキュメントをお読みください:

http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

于 2012-06-05T16:22:56.823 に答える