2015-10-13 11 views
7

Ich versuche, ein java.time.LocalTime Objekt in java.util.Date zu konvertieren, kann aber keine geeignete Methode finden. Was ist der richtige Weg, dies zu tun?Convert LocalTime (Java 8) zu Datum

Gibt es einen Grund, warum Java nicht mit einer integrierten direkten Konvertierungsmethode ausgeliefert wird?

Zu möglichen Duplikaten:
How to convert joda time - Funktioniert nicht für mich, wahrscheinlich fehlen mir einige "joda" Bibliotheken?
How to convert Date to LocalTime? - Diese Adresse Konvertierung umgekehrt.

+0

Mögliche Duplikate von [Wie konvertiert man die Joda-Zeit LocalTime in java.util.Date?](http://stackoverflow.com/questions/15543031/how-to-convert-joda-time-localtime-to-java- util-date) – thegauravmahawar

+0

Mögliches Duplikat von [Konvertiere java.util.Date nach java.time.LocalDate] (http://stackoverflow.com/questions/21242110/convert-java-util-date-to-java-time-localdate) – Phantomazi

Antwort

11

Localtime kann eigentlich nicht auf ein Datum umgewandelt werden, weil es nur die Zeit Teil enthält Datetime. Wie 11:00 Uhr. Aber kein Tag ist bekannt. Sie müssen es manuell liefern:

LocalTime lt = ...; 
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)). 
     atZone(ZoneId.systemDefault()).toInstant(); 
Date time = Date.from(instant); 

Hier ist ein Blog-Post, die explains all the conversions zwischen dem neuen und dem alten API.

Es gibt keine einfache integrierte Konvertierungsmethode, da diese APIs die Idee von Datum und Uhrzeit auf eine völlig andere Weise angehen.

+0

Danke! Aber ich bin verwirrt von Ihrer LocalTime-Deklaration. Was bedeutet 'LocalTime lt = ...' genau? – Jbartmann

+1

Es bedeutet, dass Sie das Objekt manuell erstellen oder von irgendwo abrufen sollten. Es ist nicht Java, wenn du das fragst. – Dariusz

+1

Dariusz bedeutet, dass Sie vier Dinge angeben müssen, um seinen Code zu verwenden: ein LocalTime-Objekt, eine Ganzzahl für das Jahr, eine Ganzzahl für den Monat und eine ganze Zahl für den Tag. Ersetzen Sie auch den 'ZoneId.systemDefault' durch eine bestimmte ZoneId, abhängig davon, wo Sie dieses Datum-Uhrzeit-Ziel festgelegt haben. 12.30 Uhr am 3. Dezember kommt früher in Paris als zum Beispiel Montreal. –

2
LocalTime lt = ...; 
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)). 
     atZone(ZoneId.systemDefault()).toInstant(); 
Date time = Date.from(instant); 

Von: http://blog.progs.be/542/date-to-java-time