2012-04-10 13 views
0

Mein String-Format ist: M/d/yyyy h: m: s aaConvert String Format in ein anderes Datumsformat

Jetzt will ich es ändern in yyyy-MM-TTThh: mm: ss-Format.

Wie kann ich es in diesem Format ändern. Bitte sagen Sie mir die passende Lösung

+0

Sie müssen das * Quelle * Datum selbst analysieren (mit Hilfe von 'HttpDateParser') konstruiert ein' Calendar' Objekt aus dem analysierten Datum und dann geben sie auf 'SimpleDateFormat.format()' Methode, um es neu zu formatieren sie Ihre Bedürfnisse nach. – mrvincenzo

+1

Eigentlich könnte es in Ihrem Fall einfacher sein, es direkt neu zu formatieren (mit Methoden zur String-Manipulation). – mrvincenzo

Antwort

4

Verfahren getConvertedDate(String), wird für die Umwandlung in ein Nur-Text-Parsing tun.

private String getConvertedDate(String inputDate) { 
    // extract and adjust Month 
    int index = inputDate.indexOf('/'); 
    String month = inputDate.substring(0, index); 
    if (month.length() < 2) { 
     month = "0" + month; 
    } 

    // extract and adjust Day 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf('/'); 
    String day = inputDate.substring(0, index); 
    if (day.length() < 2) { 
     day = "0" + day; 
    } 

    // extract Year 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf(' '); 
    String year = inputDate.substring(0, index); 

    // extract Hour 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf(':'); 
    String hour = inputDate.substring(0, index); 

    // extract and adjust Minute 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf(':'); 
    String minute = inputDate.substring(0, index); 
    if (minute.length() < 2) { 
     minute = "0" + minute; 
    } 

    // extract and adjust Second 
    inputDate = inputDate.substring(index + 1); 
    index = inputDate.indexOf(' '); 
    String second = inputDate.substring(0, index); 
    if (second.length() < 2) { 
     second = "0" + second; 
    } 

    // extract AM/PM marker 
    // adjust hour, +12 for PM 
    inputDate = inputDate.substring(index + 1);   
    String am_pm_marker = inputDate.substring(0); 
    if (am_pm_marker.equalsIgnoreCase("pm")) { 
     int hourValue = 0; 
     try { 
      hourValue = Integer.parseInt(hour); 
     } catch (Exception e) { 
     } 
     hourValue += 12; 
     hour = "" + hourValue; 
     if (hour.length() < 2) { 
      hour = "0" + hour; 
     } 
    } else { 
     if (hour.length() < 2) { 
      hour = "0" + hour; 
     } 
    } 

    String outputDate = year + "-" + month + "-" + day; 
    outputDate += "T" + hour + ":" + minute + ":" + second; 
    return outputDate; 
} 

Beispiel Ein- und Ausgang:

String input = "04/01/2012 9:55:47 pm"; 
System.out.println("Output: " + getConvertedDate(input)); 
// Output: 2012-04-01T21:55:47 
+0

Ich habe bereits die gleiche Methode verwendet. Anyways danke für Ihre Antwort. – AnkitRox

-2

Grundsätzlich das erste SimpleDateFormat erkennt Ihr ursprüngliches Format und analysiert es in ein Datum. Dann formatiert das zweite das Datumsobjekt zu dem, was Sie brauchen.

Ich habe keine jdk um hier zu testen, aber es sollte funktionieren.

prüfen diese Links für Format Syntax, falls etwas nicht funktioniert:
http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

+1

API-Dokumentation Sie sich beziehen, sind für Java SE während Frage ist ** Java ME **, die nicht 'SimpleDateFormat' haben (J2ME CLDC 1.0 und 1.1 hat sicherlich nicht) – gnat

+1

"Simple (" M/d/yyyy h : m: s aa "). parse()" Die Methode "parse" ist für die SimpleDateFormat-Klasse nicht verfügbar. – AnkitRox

+0

@AnkitRox, können Sie die Antwort http://stackoverflow.com/questions/9892156/blackberry-how-to-convert-time-from-string-in-hhhhmmss-ss-to-mmss-format überprüfen. Ich denke, 'M/d/yyyy h: m: s aa' ist keine üblichen Muster für die Verwendung von HttpDateParser, http://www.blackberry.com/developers/docs/6.0.0api/net/rim/device/api /io/http/HttpDateParser.html. – Rupak