2010-12-07 5 views
1

Meine Anforderung ist es, das Datum im Format MM/dd/yy zu erhalten. Aber ich bekomme derzeit den Datumswert als "So Dec 31 00:00:00 IST 2006". Ich habe einen Beispielcode für die Konvertierung wie folgt versucht.Datumsformat in Java

String pattern = "MM/dd/yyyy"; 
    SimpleDateFormat format = new SimpleDateFormat(pattern); 
    try { 
    Date date = format.parse("12/31/2006"); 
    System.out.println(date); 
    } catch (ParseException e) { 
    e.printStackTrace(); 
    } 

Bitte helfen Sie mir das angegebene Datum in MM/dd/yy

Antwort

7

Sie müssen konvertieren verwenden SDF (SimpleDateFormat) auch die Ausgabe zu verarbeiten.

String pattern = "MM/dd/yyyy"; 
    SimpleDateFormat format = new SimpleDateFormat(pattern); 
    try { 
    Date date = format.parse("12/31/2006"); 
    System.out.println(format.format(date)); 
    } catch (ParseException e) { 
    e.printStackTrace(); 
    } 
+0

Dank yock und jeden. Der oben genannte Code funktioniert gut. Hab viel über Datum gelernt. Wählen Sie dies als a = meine akzeptierte Antwort. – i2ijeya

0

Sie verwenden die SimpleDateFormat zu Parse einen String, und das funktioniert gut - aber dann sind Sie Date ‚s toString-Methode (implizit), wenn das Datum der Formatierung. Das verwendet ein Standardformat, das vollständig unabhängig von dem Format ist, das ursprünglich zum Parsen des Werts verwendet wurde.

Ein Date Objekt weiß nichts über wie Sie es formatieren möchten. Das sollten Sie für SimpleDateFormat verwenden.

Sie kann Verwendung SimpleDateFormat, um es wieder zu formatieren:

System.out.println(format.format(date)); 

... aber ein besserer Ansatz wäre zu Joda Time und verwenden seine DateTimeFormatter Klasse zu wechseln, der Thread-sicher und unveränderlich ist, im Gegensatz zu SimpleDateFormat ... der Rest seiner API ist auch besser.

1

Ihren Code ändern:

String pattern = ; 
SimpleDateFormat inputFormat = new SimpleDateFormat("MM/dd/yyyy"); 
SimpleDateFormat outputFormat = new SimpleDateFormat("MM/dd/yy"); 
try { 
    Date date = inputFormat.parse("12/31/2006"); 
    System.out.println(outputFormat.format(date)); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
1

Der Grund Ihrer Ausgabe ist, weil Sie das Datum Objekt durch System.out.println(date); Ausgeben sind, die wirksam ist, übersetzt System.out.println(date.toString());

Die toString() Methode der Date Ausgänge Datum im Format:

EEE MMM dd HH:mm:ss zzz yyyy 

Hier ist der Code für Date.toString()

public String toString() { 
    // "EEE MMM dd HH:mm:ss zzz yyyy"; 
    BaseCalendar.Date date = normalize(); 
    StringBuilder sb = new StringBuilder(28); 
    int index = date.getDayOfWeek(); 
    if (index == gcal.SUNDAY) { 
     index = 8; 
    } 
    convertToAbbr(sb, wtb[index]).append(' ');   // EEE 
    convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' '); // MMM 
    CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd 

    CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':'); // HH 
    CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm 
    CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss 
    TimeZone zi = date.getZone(); 
    if (zi != null) { 
     sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz 
    } else { 
     sb.append("GMT"); 
    } 
    sb.append(' ').append(date.getYear()); // yyyy 
    return sb.toString(); 
    } 

Ihr Code ist zwar korrekt. Verwenden Sie SimpleDateFormat das Datum angezeigt werden wie folgt:

System.out.println(format.format(date));