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 input = new SimpleDateFormat("ddMMyyyy");
SimpleDateFormat output = new SimpleDateFormat("dd/MM/yyyy");
System.out.println(output.format(input.parse("02122012"))); // 02/12/2012

正如 Jon Skeet 所建议的那样,您还TimeZone可以LocaleSimpleDateFormat

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 回答