5

日付であるが次のようにフォーマットされたJavaの文字列があります。

02122012

2012年2月12日のように再フォーマットする必要があります。これを行うにはどうすればよいですか。

次のコードで、java.text.SimpleDateFormat@d936eac0を取得し続けます

以下は私のコードです。

public static void main(String[] args) {

    // Make a String that has a date in it, with MEDIUM date format
    // and SHORT time format.
    String dateString = "02152012";

    SimpleDateFormat input = new SimpleDateFormat("ddMMyyyy");
    SimpleDateFormat output = new SimpleDateFormat("dd/MM/yyyy");
    try {
        output.format(input.parse(dateString));
    } catch (Exception e) {

    }
    System.out.println(output.toString());
}
4

2 に答える 2

9

SimpleDateFormatを使用します。

SimpleDateFormat input = new SimpleDateFormat("ddMMyyyy");
SimpleDateFormat output = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(output.format(input.parse("02122012"))); // 02/12/2012

Jon Skeetが提案したように、TimeZoneLocaleを設定することもできますSimpleDateFormat

SimpleDateFormat englishUtcDateFormat(String format) {
    SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.ENGLISH);
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    return sdf;
}

SimpleDateFormat input = englishUtcDateFormat("ddMMyyyy");
SimpleDateFormat output = englishUtcDateFormat("dd/MM/yyyy");
System.out.println(output.format(input.parse("02122012"))); // 02/12/2012
于 2012-11-14T18:46:41.920 に答える
0

これは、編集した質問のコードの問題です。

System.out.println(output.toString());

SimpleDateFormatを呼び出した結果ではなく、を出力していますformat。確かに、あなたは呼び出しの結果を無視しformatています:

output.format(input.parse(dateString));

次のように変更するだけです。

System.out.println(output.format(input.parse(dateString)));

またはより明確に:

Date parsedDate = input.parse(dateString);
String reformattedDate = output.format(parsedDate);
System.out.println(reformattedDate);
于 2012-11-14T19:20:22.567 に答える