2016-08-03 10 views
5

Im Folgenden ist der Code, der eine Zeichenfolge in Joda Datetime-Objekt basierend auf der Formatzeichenfolge konvertiert.Java Joda Zeit mehrere Datumsformat Code-Optimierung

Dieser Code liefert mir das gewünschte Ergebnis, aber die Verwendung der Ausnahme als Kontrollfluss ist kein gutes Design. Bitte optimieren Sie den Code.

+2

ich diesen Code gerne versuchen zu tun :) –

+0

In diesem API Haken ist OK. Verschieben Sie FORMATTERS außerhalb der Methode (als Feld) und statisch endgültig. –

Antwort

2

Joda verwenden, können Sie diesen

import org.joda.time.DateTime; 
import org.joda.time.format.DateTimeFormat; 
import org.joda.time.format.DateTimeFormatter; 
import org.joda.time.format.DateTimeFormatterBuilder; 
import org.joda.time.format.DateTimeParser; 

public class JODATester { 

    public static void main(String[] args) { 
     DateTimeParser[] parserList = { DateTimeFormat.forPattern("MM/dd/yyyy hh:mm:ss.SSS a").getParser(), 
       DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS").getParser(), 
       DateTimeFormat.forPattern("MM-dd-yyyy hh:mm:ss.SSS a").getParser(), 
       DateTimeFormat.forPattern("MM dd yyyy hh:mm:ss.SSS a").getParser(), 
       DateTimeFormat.forPattern("MM-dd-yyyy hh.mm.ss.SSS a").getParser() }; 
     DateTimeFormatter formatter = new DateTimeFormatterBuilder().append(null, parserList).toFormatter(); 

     DateTime date1 = formatter.parseDateTime("2010-01-01 01:01:01.001"); 
     DateTime date2 = formatter.parseDateTime("08/03/2016 03:01:33.790 PM"); 

     System.out.println(date2); 

     System.out.println(date1); 

//  
//  DateTime dt = new DateTime(); 
//  DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy hh:mm:ss.SSS a"); 
//  String str = fmt.print(dt); 
//  
//  System.out.println(str); 

    } 

} 
+0

Das ist die beste Lösung mit Joda-Time +1. Aber ich bin mir sicher, dass meine lib Time4J mit [MultiFormatParser] (http://time4j.net/javadoc-en/net/time4j/format/expert/MultiFormatParser.html) immer noch schneller ist aufgrund interner Optimierungen ;-) Durch die Weg, Java-8 ist viel langsamer, sehr traurig, siehe auch dieses [JDK-Problem] (https://bugs.openjdk.java.net/browse/JDK-8152273). –