Die Antwort von Assylias und die Antwort von JB Nizet sind beide richtig:
- Rufen Sie die neue Konvertierungsmethode auf, die der Legacy-Klasse hinzugefügt wurde
java.util.Date::toInstant.
- Rufen Sie an
Instant::atZoneund übergeben Sie a ZoneId, was zu a führt ZonedDateTime.

Ihr Codebeispiel richtet sich jedoch an Quartale. Lesen Sie dazu weiter.
Viertel
Sie müssen Ihre Quartiere nicht selbst verwalten. Verwenden Sie eine bereits geschriebene und getestete Klasse.
org.threeten.extra.YearQuarter
Die java.time- Klassen werden durch das ThreeTen-Extra- Projekt erweitert. Unter den vielen praktischen Klassen, die in dieser Bibliothek angeboten werden, finden Sie Quarterund YearQuarter.
Holen Sie sich zuerst Ihre ZonedDateTime.
ZonedId z = ZoneID.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = myJavaUtilDate.toInstant().atZone( z ) ;
Bestimmen Sie das Jahresquartal für dieses bestimmte Datum.
YearQuarter yq = YearQuarter.from( zdt ) ;
Als nächstes brauchen wir das Startdatum dieses Quartals.
LocalDate quarterStart = yq.atDay( 1 ) ;
Obwohl ich dies nicht unbedingt empfehle, können Sie eine einzelne Codezeile verwenden, anstatt eine Methode zu implementieren.
LocalDate quarterStart =
YearQuarter
.from(
myJavaUtilDate
.toInstant()
.atZone(
ZoneID.of( "Africa/Tunis" )
)
)
.atDay( 1 )
;
Übrigens, wenn Sie Ihre Nutzung java.util.Dateinsgesamt auslaufen lassen können , tun Sie dies. Es ist eine schreckliche Klasse, zusammen mit seinen Geschwistern wie Calendar. Verwenden Sie Datenur dort, wo Sie müssen, wenn Sie mit altem Code arbeiten, der noch nicht auf java.time aktualisiert wurde .
Über java.time
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie java.util.Date, Calendar, & SimpleDateFormat.
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Sie können java.time- Objekte direkt mit Ihrer Datenbank austauschen . Verwenden Sie einen JDBC-Treiber, der mit JDBC 4.2 oder höher kompatibel ist . Keine Notwendigkeit für Zeichenfolgen, keine Notwendigkeit für java.sql.*Klassen.
Woher bekomme ich die java.time-Klassen?
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden Interval, YearWeek, YearQuarter, und mehr .