web-dev-qa-db-fra.com

Comment convertir Joda-Time DateTime en Java.util.Date et vice versa?

Est-il possible de faire ça? Si oui, comment puis-je convertir les données de Joda-Time à Date et inversement?

64
Time

Pour convertir Java Date en Joda DateTime : -

Date date = new Date();
DateTime dateTime = new DateTime(date);

Et vice versa:-

Date dateNew = dateTime.toDate();

Avec TimeZone, si nécessaire: -

DateTime dateTimeNew = new DateTime(date.getTime(), timeZone);
Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate();
97
SudoRahul

Vous n'avez pas spécifié le type dans Joda Time qui vous intéresse, mais:

Instant instant = ...;
Date date = instant.toDate();
instant = new Instant(date);
// Or...
instant = new Instant(date.getTime());

Ni Date ni Instant ne sont liés à des fuseaux horaires, il est donc inutile de les spécifier ici.

Il n’a aucun sens de convertir LocalDateTime/LocalDate/LocalTime en Date (ou inversement), car cela dépend du fuseau horaire appliqué.

Avec DateTime vous pouvez convertir en un Date sans spécifier le fuseau horaire, mais convertir à partir de Date à DateTime vous devez spécifier le fuseau horaire, sinon le fuseau horaire par défaut du système sera utilisé. (Si vous voulez vraiment cela, je le spécifierais explicitement pour préciser qu'il s'agit d'un choix délibéré.)

Par exemple:

DateTimeZone zone = DateTimeZone.forID("Europe/London");
Date date = ...;
DateTime dateTime = new DateTime(date.getTime(), zone);
6
Jon Skeet

Pour convertir de Java Date en heure Joda):
La conversion du fuseau horaire Date à DateTime devait être spécifiée.
Pour convertir une date Java.util en heure Joda, il vous suffit de transmettre la date et le fuseau horaire Java.util au constructeur de l'heure Joda.

Java.util.Date date = new Java.util.Date(System.currentTimeMillis());
DateTimeZone dtz = DateTimeZone.getDefault();// Gets the default time zone.
DateTime dateTime = new DateTime(date.getTime(), dtz);

Pour convertir l'heure de Joda en Java Date:
Pour le cas inverse, Joda DateTime a une méthode toDate() qui renverra la date Java.util.

DateTime jodaDate = new DateTime();
Java.util.Date date = jodaDate.toDate();

Pour plus de détails visitez ici

1
Shreyos Adikari