Joda Format DateTime pour XMLGregorianCalendar Type
Je suis en utilisant JAXB 2.2.8-b01 impl et j'ai un schéma qui a un xs:date élément qui crée un XMLGregorianCalendar instance. Je vais essayer d'obtenir un Joda-Time DateTime format d'horodatage mais depuis que je dois avoir un XMLGregorianCalendar exemple, je ne suis pas sûr que c'est possible. Des idées?
Schéma XSD:
<xs:element type="xs:date" name="date-archived" minOccurs="0" maxOccurs="1" nillable="false"/>
JAXB Généré Propriété:
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar date;
Conversion XML Classe:
//java.util.Date being passed
private XMLGregorianCalendar converToGregorianCal(Date date) {
DatatypeFactory df = null;
try {
df = DatatypeFactory.newInstance();
} catch (DatatypeConfigurationException e) {
LOG.error("error getting DatatypeFactory instance " + e.getMessage());
}
if (date == null) {
return null;
} else {
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(date.getTime());
return df.newXMLGregorianCalendar(gc);
}
}
Pour info, le Joda-Time le projet est maintenant dans entretien, avec l'équipe conseiller de migration de la java.de temps les classes. Voir Tutoriel Oracle.
Vrai, aussi longtemps que vous êtes à l'aide de Java 8. Avec l'héritage de Java 7 (ou 6 ou 5) les Joda-Time est le meilleur moyen.
Une grande partie de la java.temps fonctionnalité a été porté à Java 6 & 7 dans le ThreeTen-Backport projet. Lorsque vous éventuellement passer à Java 8 ou version ultérieure, vous aurez besoin de faire un peu plus que de passer votre
Grâce à la mise en exergue de cette arrière-port. Je n'étais pas au courant de cela. Que ferait la transition vers Java 8 plus lisse.
myXMLGregorianCalendar.toGregorianCalendar().toZonedDateTime().toString()
Vrai, aussi longtemps que vous êtes à l'aide de Java 8. Avec l'héritage de Java 7 (ou 6 ou 5) les Joda-Time est le meilleur moyen.
Une grande partie de la java.temps fonctionnalité a été porté à Java 6 & 7 dans le ThreeTen-Backport projet. Lorsque vous éventuellement passer à Java 8 ou version ultérieure, vous aurez besoin de faire un peu plus que de passer votre
import
consolidés.Grâce à la mise en exergue de cette arrière-port. Je n'étais pas au courant de cela. Que ferait la transition vers Java 8 plus lisse.
OriginalL'auteur c12 | 2014-01-22
Vous devez vous connecter pour publier un commentaire.
C'est un chemin court:
OriginalL'auteur thomas.mc.work
Ci-dessous comment vous pouvez avoir
xs:date
correspondent à Joda-TimeDateTime
générés dans la classe de modèle.Schéma XML
Ci-dessous est un Schéma XML avec deux éléments de type
xs:date
:Liaison
xs:date
à Joda-TimeDateTime
Externe de liaison document peut être utilisé pour personnaliser la génération de classe, voici ce que vous devez faire pour générer Joda-Time
DateTime
pourxs:date
. La liaison document est référencé à l'aide de la-b
drapeau à XJC.Lier Toutes Les Instances
Lier Une Instance
La liaison fichier ci-dessous sera la cause de la
foo
élément à utiliserDateTime
mais pas lebar
élément.com.exemple.MyConverter
C'est l'endroit où vous mettez votre logique à convertir un
String
à partir deDateTime
:Pour Plus D'Informations
OriginalL'auteur Blaise Doughan
Pas clairement de la question, mais si vous voulez
XMLGregorianCalendar
de JodaTimeDateTime
, alors c'est possible:XMLGregorianCalendarImpl
vient d'où?XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(calendrier);
OriginalL'auteur flurdy
Votre question n'est pas claire.
DateTime?
Si vous avez un java.util.Date, vous pouvez facilement convertir un Joda-Time DateTime:
Tout un
java.util.Date
n'a pas le temps de la zone affectée (il représente UTC/GMT, sans aucun décalage horaire), unorg.joda.temps.DateTime
, en effet, de connaître son propre fuseau horaire. Si vous voulez que votre DateTime avoir UTC/GMT au lieu d'un fuseau horaire spécifique, utilisez la constante intégréeDateTimeZone.UTC
.De vidage de la console...
Lors de l'exécuter...
Passant l'instance de Date, c'est aussi simple que cela. Vous pourrez extraire à partir de la Date d'instance, c'est le nombre de millisecondes écoulées depuis le Unix Époque et passer
long
numéro de type DateTime. Mais pas besoin, comme la classe DateTime est prêt à fonctionner.Chaîne?
Ou par “format date” vous voulez dire que vous voulez un ISO 8601 chaîne formatée comme ceci:
2014-01-19T12:38.301Z
? Cette chaîne est le format par défaut pour un type DateTime esttoString
méthode.OriginalL'auteur Basil Bourque
Nous avons été confrontés à cela, et après avoir passé du temps avec les formateurs de trouvé une solution plus simple
C'était une vie de savourer.
OriginalL'auteur Sanjay Bharwani
Être très prudent avec JodaTime, la lib ne pas utiliser le fuseau horaire tables de java.
Ces convertisseur méthodes rejette le fuseau horaire de l'information. Envisager de créer le calendrier des objets avec le temps-zone:
new GregorianCalendar(dateTime.getZone().toTimeZone())
OriginalL'auteur Murillo Maia