webentwicklung-frage-antwort-db.com.de

Konvertieren einer Datumszeichenfolge in ein DateTime-Objekt mithilfe der Joda Time-Bibliothek

Ich habe ein Datum als Zeichenfolge im folgenden Format "04/02/2011 20:27:05". Ich verwende die Joda-Time-Bibliothek und möchte sie in DateTime object konvertieren. Ich tat:

DateTime dt = new DateTime("04/02/2011 20:27:05")

Ich erhalte jedoch die folgende Fehlermeldung:

Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"

Wie konvertiere ich das obige Datum in ein DateTime-Objekt?

224
Tom

Verwenden Sie DateTimeFormat :

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime dt = formatter.parseDateTime(string);
441
Bozho

Ich weiß, dass dies eine alte Frage ist, aber ich wollte hinzufügen, dass dies ab JodaTime 2.0 mit einem Einzeiler möglich ist:

DateTime date = DateTime.parse("04/02/2011 20:27:05", 
                  DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss"));
61
stephen.hanson
DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss").parseDateTime("04/02/2011 20:27:05");
19
Shawn Vader

Aus Kommentaren habe ich eine Antwort ausgewählt und auch TimeZone hinzugefügt:

String dateTime = "2015-07-18T13:32:56.971-0400";

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZZ")
        .withLocale(Locale.ROOT)
        .withChronology(ISOChronology.getInstanceUTC());

DateTime dt = formatter.parseDateTime(dateTime);
14
Ali Karaca

Ihr Format entspricht nicht dem erwarteten ISO-Format. Sie sollten es versuchen

DateTimeFormatter format = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime time = format.parseDateTime("04/02/2011 20:27:05");
12

Sie können auch SimpleDateFormat verwenden, wie in DateTimeFormat.

Date startDate = null;
Date endDate = null;
try {
    if (validDateStart!= null) startDate = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH).parse(validDateStart + " " + validDateStartTime);
    if (validDateEnd!= null) endDate = new SimpleDateFormat("MM/dd/yyyy HH:mm", Locale.ENGLISH).parse(validDateEnd + " " + validDateEndTime);
} catch (ParseException e) {
    e.printStackTrace();
}
4
efirat

Sie benötigen ein DateTimeFormatter , das dem von Ihnen verwendeten Format entspricht. In den Dokumenten finden Sie Anweisungen zum Erstellen eines Dokuments.

Aus der Manschette brauche ich format = DateTimeFormat.forPattern("M/d/y H:m:s")

2
Mark Tozzi

tl; dr

Java.time.LocalDateTime.parse( 
    "04/02/2011 20:27:05" , 
    DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm:ss" )
)

Java.time

Der moderne Ansatz verwendet die Java.time-Klassen, die das ehrwürdige Joda-Time -Projekt ersetzen.

Analysieren Sie als LocalDateTime , da Ihre Eingabe keinen Indikator für die Zeitzone oder den Offset von UTC enthält.

String input = "04/02/2011 20:27:05" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu HH:mm:ss" ) ;
LocalDateTime ldt = LocalDateTime.parse( input , f ) ;

ldt.toString (): 2011-02-04T20: 27: 05

Tipp: Verwenden Sie nach Möglichkeit die Standardformate ISO 8601 , wenn Sie Datum-Uhrzeit-Werte als Text und nicht als Format verwenden. Praktischerweise verwenden die Java.time-Klassen die Standardformate beim Analysieren/Generieren von Strings.


Über Java.time

Das Java.time -Framework ist in Java 8 und höher integriert. Diese Klassen ersetzen die lästigen alten Legacy Date-Time-Klassen wie Java.util.Date , Calendar , & SimpleDateFormat .

Das Joda-Time - Projekt, jetzt im Wartungsmodus , empfiehlt die Migration zu den Java.time -Klassen.

Weitere Informationen finden Sie im Oracle Tutorial . In Stack Overflow finden Sie viele Beispiele und Erklärungen. Spezifikation ist JSR 310 .

Wo erhalten Sie die Java.time-Klassen? 

Das Projekt ThreeTen-Extra erweitert Java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Erweiterungen von Java.time. Hier finden Sie einige nützliche Klassen, wie zum Beispiel Interval , YearWeek , YearQuarter und more .

2
Basil Bourque

Eine einfache Methode:

public static DateTime transfStringToDateTime(String dateParam, Session session) throws NotesException {
    DateTime dateRetour;
    dateRetour = session.createDateTime(dateParam);                 

    return dateRetour;
}
1
sissi49

Es gibt zwei Möglichkeiten dies könnte erreicht werden .

DateTimeFormat

DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss").parseDateTime("04/02/2011 20:27:05");

SimpleDateFormat

        String dateValue = "04/02/2011 20:27:05";
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); //  04/02/2011 20:27:05

        Date date = sdf.parse(dateValue); // returns date object
        System.out.println(date); // outputs: Fri Feb 04 20:27:05 IST 2011
0
Dulith De Costa