IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

xsd dateTime - Manipulation


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 51
    Points : 30
    Points
    30
    Par défaut xsd dateTime - Manipulation
    Bonjour,

    ma question est simple : J'ai deux Datatypes dateTime. J'aimerais simplement les comparer pour savoir si l'un est antérieur à l'autre, par exemple. Existe-t-il des méthodes standards pour faire cela ? Si oui, lesquelles ? Si non, vers où dois-je me diriger ?

    Merci d'avance

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    "XSD DateTime" : tu ne parles donc pas de Java là mais de XML (si j'dis pas de bêtise).

    Donc tout dépend de la conversion de type que tu fais des DateTime de ton fichier XML en Java.

    Edit : Je viens de voir quelque chose qui a l'air de parler de ce type DateTime et qui parle d'un type Java à associer XMLGregorianCalendar et du coup tu aurais la méthode compare.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Enfait, dans mon programme java, je récupère dans un document XML un String qui est du type dateTime :

    [-]CCYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm]

    Exemples :

    2011-05-12T11:11:39+00:00
    2010-04-01T07:42:47Z

    Et j'aimerai pouvoir comparer ces dates pour savoir laquelle est la plus récente.

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Donc ne le récupère pas en String ou tout du moins créé un type Date Java à partir de ton String qui te permettra de faire une comparaison entre des dates.

    Ou essaye aussi d'adapter ce que je t'ai joins sur l'histoire du XMLGregorianCalendar
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    J'ai essayé avec ce que tu m'a proposé, mais je n'y suis pas parvenu ..
    J'ai du utiliser l'API Joda-Time.

    Est-ce qu'il y a moyen sans ? Si tu arrives avec ta méthode à passer d'un String s = "2010-04-01T07:42:47Z" à un objet Date contenant cette date, je suis preneur !

    Merci d'avance, et merci pour les réponses fournies !

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    SimpleDateFormat sert précisément à ça. (Mais n'est pas spécialement lié à XML.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 51
    Points : 30
    Points
    30
    Par défaut
    Je n'arrivais pas à l'utiliser, je ne sais pas pourquoi ..

    Désormais, je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String s; //contient la date au format dateTime
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
    Date date = sdf.parse(s);
    Ca fonctionne, mais ça ne prend pas en compte le "Z" ou le "(+||-)hh:mm" qui se trouve à la fin de mon String. Dans mon cas ce n'est pas grave. Mais si j'en avais besoin, comment devrais-je faire ?


    Encore merci pour les réponses.

  8. #8
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par sikin1989 Voir le message
    Ca fonctionne, mais ça ne prend pas en compte le "Z" ou le "(+||-)hh:mm" qui se trouve à la fin de mon String. Dans mon cas ce n'est pas grave. Mais si j'en avais besoin, comment devrais-je faire ?
    "Z" ou le "(+||-)hh:mm" c'est la même chose puisque ça correspond à la notion de fuseau horaire.

    Tu retrouves cette notion dans le SimpleDateFormat (cf. Javadoc) :
    z - Time zone - General time zone
    Z - Time zone - RFC 822 time zone
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ouais j'avais oublié la time zone.

    Citation Envoyé par Robin56 Voir le message
    "Z" ou le "(+||-)hh:mm" c'est la même chose puisque ça correspond à la notion de fuseau horaire.

    Tu retrouves cette notion dans le SimpleDateFormat (cf. Javadoc) :
    z - Time zone - General time zone
    Z - Time zone - RFC 822 time zone
    L'ennui c'est que c'est pas du RFC 822, c'est du ISO 8601. Et effectivement, il y a rien dans la bibli Java standard pour ça. Joda-Time, entre autres, permet d'éluder le problème.

    Sinon je me suis fait ça pour quand j'en ai besoin. C'est pas complètement rigoureux (ça accepte certains formats invalides) mais c'est simple et ça couvre les formats corrects les plus utilisé :.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    public class ISO8601Format {
     
    	public static int ZONE_INDEX = "yyyy-MM-ddTHH:mm:ss".length();
     
    	public static String DATETIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss";
    	public static String DATETIMEZONE_FORMAT = DATETIME_FORMAT + 'z';
     
    	public static int ZONE_HOURS_LENGTH = "+00".length();
    	public static int ZONE_MINUTES_INDEX = "+00:".length();
    	public static int ZONE_LENGTH = "+00:00".length();
     
    	public static Date parse(String date) throws ParseException {
    		if(date.length() <= ZONE_INDEX) {
    			return new SimpleDateFormat(DATETIME_FORMAT).parse(date);
    		} else {
    			String dateTimePart = date.substring(0, ZONE_INDEX);
    			String zonePart = date.substring(ZONE_INDEX);
    			if(zonePart.equals("Z")) {
    				date = dateTimePart + "+0000";
    			} else {
    				if(zonePart.length() != ZONE_LENGTH) {
    					throw new ParseException("Bad date format: " + date, ZONE_INDEX);
    				}
    				String zoneHours = zonePart.substring(0, ZONE_HOURS_LENGTH);
    				String zoneMinutes = zonePart.substring(ZONE_MINUTES_INDEX);
    				date = dateTimePart + zoneHours + zoneMinutes;
    			}
    			return new SimpleDateFormat(DATETIMEZONE_FORMAT).parse(date);
    		}
    	}
     
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Manipulation de DateTime
    Par inter_amine dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/02/2009, 14h47
  2. Manipulation de datetime
    Par hackiles dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 22/01/2009, 11h09
  3. Manipulation XML et XSD en Word
    Par aouissaouinizar2 dans le forum Word
    Réponses: 2
    Dernier message: 22/08/2008, 10h09
  4. Une requête SQL manipule le type DateTime
    Par josy01 dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/05/2008, 11h55
  5. [XML / XSD] dateTime format
    Par be_tnt dans le forum Valider
    Réponses: 2
    Dernier message: 02/11/2006, 11h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo