2016-09-23 8 views
0

Wie können wir nur Datum von einem String entfernen und bewahren:entfernen bestimmte Wörter/Zeilen aus der Liste

For ex: String outPut = {Time = 0:0:0} {Timestamp = Tue Oct 20 23:54:10 BST 2013} 

Ich mag würde nur Date haben

For ex: Tue Oct 20 2013 

Bisher habe ich versucht, der folgende Ansatz:

String[] manipulateDate = output.getDate().split("\\{"); 
     for(String s : manipulateDate){ 
      String outputDate = manipulateDate [2].replaceAll("\\}", "").replaceAll("\\s*\\bTimestamp =\\b\\s*",""); 
       System.out.println(outputDate); 
     } 

Was ist der beste Weg, Java Date/String zu implementieren und zu verwenden?

+0

Unklar was Sie eingeben ist. Bitte lesen Sie [So erstellen Sie ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). – Andreas

Antwort

0

streng Um Ihre Frage zu beantworten, könnten Sie tun:

String date = output.replaceAll(".*Timestamp = (.*)? \\d{2}:.*?(\\d{4}).*", "$1 $2"); 

Aber es kann die gesamte Zeichenfolge als Date-Objekt zu analysieren vorzuziehen sein:

String output = "{Time = 0:0:0} {Timestamp = Sun Oct 20 23:54:10 BST 2013}"; 
String timestamp = output.replaceAll("\\{.*?\\} \\{Timestamp = (.*)\\}", "$1"); //Sun Oct 20 23:54:10 BST 2013 
ZonedDateTime dateTime = ZonedDateTime.parse(timestamp, DateTimeFormatter.ofPattern("E MMM dd HH:mm:ss z yyyy", Locale.ENGLISH)); 

Von diesem Zeitpunkt an können Sie Machen Sie mit dem date-Objekt, was Sie wollen, einschließlich des Ausdrucks als String. Beachten Sie, dass ich die ursprüngliche Zeichenfolge in Sonntag geändert habe (vs. Dienstag in Ihrer Frage): Wenn Sie sie als Datum analysierten, fiel auch auf, dass der 20. Oktober 2013 kein Donnerstag war, ein weiterer Vorteil gegenüber Strings.

+0

Danke! Was ist, wenn wir nicht ZoneDateTime verwenden möchten? Können wir klar werden Date for ex: 2014-01-01 – user2501165

+0

Sicher: 'dateTime.toLocalDate()' – assylias

Verwandte Themen