No matter which high level datetime library is used in an application, be it java.util.Calendar, Joda Time or java.time, developers still often have to work with old fashion java.util.Date. This is because java.sql.Date is a subclass of java.util.Date and therefore most, if not all, data access layer code expects or returns java.util.Date.
To convert a datetime such as 2016-11-21 09:00 to java.util.Date is very simple in Joda Time.
// from Joda to Date DateTime dt = new DateTime(); Date jdkDate = dt.toDate(); // from Date to Joda dt = new DateTime(jdkDate);
Java 8 java.time has two separate ways to represent time – human time vs machine time. Classes such as LocalDateTime and LocalDate represents human time. The Instant class represents machine time. Conversions between date time and java.util.Date must be done via an Instant.
// from LocalDateTime to Date LocalDateTime dt = LocalDateTime.of(2016, 11, 21, 09, 00); Instant i = dt.atZone(ZoneOffset.UTC).toInstant()); Date d = Date.from(i); // from Date to LocalDateTime i = d.toInstant(); dt = LocalDateTime.ofInstant(i, ZoneOffset.UTC);
You can also compare the documenation of the two libraries on interoperability with java.util.time. The Joda Time one is much shorter and easier to read.