2017-12-18 20 views
0

Ich arbeite an einer Android App.Konvertieren von Datum und Uhrzeit Zeichenfolgen in einem bestimmten Format

Ich bekomme eine Datumsstring und eine Zeit Zeichenfolge aus einer Datei JSON.

Ich muss beide Strings in eine Datumsvariable konvertieren, dann muss ich später einige Berechnungen damit machen.

Das ist, was ich bisher habe:

String fecha = fecha_reporte + " " + hora_reporte; 

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd H:m:s"); 
String dateInString = fecha; 

try { 

    Date date2 = formatter.parse(dateInString); 
    System.out.println(date2); 
    System.out.println(formatter.format(date2)); 
    Log.d("DURACION","DURACION REPORTE: calculado: "+date2); 

} catch (ParseException e) { 
    e.printStackTrace(); 
} 

Der Ausgang ist ein Datum, aber mit diesem Format:

Sun Dec 17 23:51:00 GMT-07:00 2017 

Ich brauche es mit folgendem Format: 2017-12-17 23:51:00

+0

Mögliche Duplikate von [Android, Wie kann ich String in Datum konvertieren?] (Https://stackoverflow.com/questions/8573250/android-how-can-i-convert-string-to-date) –

+1

beziehen Sie sich darauf https://StackOverflow.com/a/40176777/1848157 – Radhey

+2

müssen Sie das Format in SimpleDateFormat ändern. – Radhey

Antwort

2

java .time

Sie verwenden problematische alte Datumsklassen, die jetzt veraltet sind. Vermeide sie. Jetzt ersetzt durch die Klassen java.time.

Analysieren Sie Ihre Eingabezeichenfolgen als LocalDateTime, da sie keine Informationen über die Zeitzone oder Offset-from-UTC enthalten.

Fügen Sie eine T hinzu, um dem Standardformat ISO 8601 zu entsprechen.

String input = "2017-12-17" + "T" + "23:51:00" ; 
LocalDateTime ldt = LocalDateTime.parse(input) ; 

Generieren Sie einen String in dem gewünschten Format durch toString Aufruf und die T in der Mitte mit einem SPACE ersetzen.

ldt.toString().replace("T" , " ") ; 

Alternativ erzeugen Strings in benutzerdefinierten Formaten DateTimeFormatter Klasse.

Für frühere Android, siehe die ThreeTen-Backport und ThreeTenABP Projekte.

+0

danke, ich werde es für diese und zukünftige Projekte berücksichtigen. – mvasco

Verwandte Themen