J'ai juste pensé que je devais ajouter ma solution ci-dessous, puisque les réponses ci-dessus ne répondaient pas à mes besoins exacts. Mon schéma Xml exigeait des éléments Date et Heure séparés, et non un seul champ DateTime. Le constructeur standard de XMLGregorianCalendar utilisé ci-dessus génère un champ DateTime.
Notez qu'il y a quelques gothiques, comme le fait de devoir ajouter un au mois (puisque java compte les mois à partir de 0).
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(yourDate);
XMLGregorianCalendar xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendarDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH), 0);
XMLGregorianCalendar xmlTime = DatatypeFactory.newInstance().newXMLGregorianCalendarTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), 0);
1 votes
Pour info : ces deux classes terribles ont été supprimées il y a des années par la java.time classes définies dans la norme JSR 310. Voir
ZonedDateTime
et de nouvelles méthodes de conversion ajoutées aux classes existantes. Détails dans cette réponse par Ole V.V.