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

Servlets/JSP Java Discussion :

[jsp]Date et opérations


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 22
    Par défaut [jsp]Date et opérations
    Bonjour,

    Mon problème est le suivant :
    1)Je voudrais récupéré la date actuelle (au format JJ/MM/AAAA hh:mm:ss).
    2)Passer une date dans une variable de session.
    3)Soustraire une date d'une autre date.
    4)Afficher le résultat et le ranger dans une base de données oracle.

    Je suis obligé d'utilisé la version jdk 1.2.2 sur un serveur iPlanet Web Server 4.1.

    J'ai essayé pour 1) :
    GregorianCalendar calendar = new GregorianCalendar();
    Date trialTime = new Date();
    calendar.setTime(trialTime);

    Mais ça ne passe pas, il doit me manquer un import...

  2. #2
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Par défaut
    Les objets Date ou Calendar n'ont pas de format à proprement parlé.
    Tu dois les formatter à l'affichage.

    1) Pour ce qui est de récupérer la date du jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendar today = Calendar.getInstance();
    Permet de récupérer la date du jour.

    2) Tu peux le mettre dans la session comme n'imorte quel objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.setAttribute("monCalendar", today);
    3) Ensuite pour soustraire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Calendar today = (Calendar)session.getAttribute("monCalendar");
    Calendar autreCalendar = Calendar.getInstance();
    long ecart = today.getTimeInMillis()-autreCalendar.getTimeInMillis();
    4) Tu peux ensuite afficher ecart (qui est en ms) en ce que tu veux avec les opérations qui vont bien.

    Voilà j'espère avoir répondu.
    PS :pour formatter une Date, va voir la classe java.text.SimpleDateFormat, et la méthode format(tonCalendar.getTime(), new FieldPosition(0))

    Voili, voilou,
    8)

  3. #3
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Il y a meme des fonctions de soustraction directe dans Calendar et gregorianCalendar sans passer par les ms.


    Pour les jsp, la taglib fmt de la JSTL est très adaptée.

    @+

  4. #4
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Par défaut
    Citation Envoyé par RanDomX
    Il y a meme des fonctions de soustraction directe dans Calendar et gregorianCalendar sans passer par les ms.
    Quelles méthodes ?? Pas en 1.3.1 ??

  5. #5
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Exact j'avais pas lu le post jusqu'au bout, pas en 1.2.2.

    mais tu peux utiliser la méthode add avec un sigfne négatif pour les soustractions : http://java.sun.com/j2se/1.4.2/docs/api/java/util/GregorianCalendar.html#add(int, int)


    @+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 22
    Par défaut
    J'ai des erreurs, voici la première (les autres découlent de celle-ci) :

    [09/avr./2004:12:01:34] info ( 1616): JSP: JSP1x compiler threw exception
    org.apache.jasper.JasperException: Unable to compile class for JSPd:\IWS\https-luke\config\..\ClassCache\_jsps\_ie\_question1_jsp.java:242: Class _jsps._ie.Calendar not found.
    Calendar today = Calendar.getInstance();
    ^

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 22
    Par défaut
    J'ai rajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ page import="java.util.*"%>
    et l'erreur est parti!

    Je continue!

    Et j'affiche today :

    java.util.GregorianCalendar

    [time=1081509564875,
    areFieldsSet=true,
    areAllFieldsSet=true,
    lenient=true,
    zone=java.util.SimpleTimeZone

    [id=Europe/Paris,offset=3600000,
    dstSavings=3600000,
    useDaylight=true,
    startYear=0,
    startMode=2,
    startMonth=2,
    startDay=-1,
    startDayOfWeek=1,
    startTime=7200000,
    endMode=2,
    endMonth=9,
    endDay=-1,
    endDayOfWeek=1,
    endTime=10800000],
    firstDayOfWeek=2,
    minimalDaysInFirstWeek=1,
    ERA=1,YEAR=2004,
    MONTH=3,
    WEEK_OF_YEAR=15,
    WEEK_OF_MONTH=2,
    DAY_OF_MONTH=9,
    DAY_OF_YEAR=100,
    DAY_OF_WEEK=6,
    DAY_OF_WEEK_IN_MONTH=2,
    AM_PM=1,HOUR=1,
    HOUR_OF_DAY=13,
    MINUTE=19,
    SECOND=24,
    MILLISECOND=875,
    ZONE_OFFSET=3600000,
    DST_OFFSET=3600000]

  8. #8
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Et c'est bon ? ca te conviens ?

    Si oui ajoute [résolu]

    Sinon pose ton pb !!

    @+

  9. #9
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Par défaut
    D'accord avec toi RanDomX pour la méthode add, mais il faut que tu le fasses pour chaque champs (jour, mois, annee, heure, minutes secondes)...
    Enfin c'est moin pratique.
    Sinon pour pouvoir avoir un affichage correct de ta date il faut que tu la formate avec SimpleDateFormat du package java.text, déjà précisé dans mon premier post

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 22
    Par défaut
    Je viens d'essayer cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Calendar datefin = Calendar.getInstance();
    Calendar datedebut = (Calendar)session.getAttribute("sessiontest.datedebut");
    datefin.add(datefin.get(Calendar.MILLISECOND),-(datedebut.get(Calendar.MILLISECOND)));
    Et j'ai une erreur. L'erreur vient de la dernière ligne car lorsque que je la met en commentaire, je n'obtient pas d'erreur (mais j'obtient pas le résultat attendu )

    Par contre, il y a une petite chose que je voudrais rajouter :

    add(f, delta) adds delta to field f. This is equivalent to calling set(f, get(f) + delta) with two adjustments:

    Add rule 1. The value of field f after the call minus the value of field f before the call is delta, modulo any overflow that has occurred in field f. Overflow occurs when a field value exceeds its range and, as a result, the next larger field is incremented or decremented and the field value is adjusted back into its range.

    Add rule 2. If a smaller field is expected to be invariant, but it is impossible for it to be equal to its prior value because of changes in its minimum or maximum after field f is changed, then its value is adjusted to be as close as possible to its expected value. A smaller field represents a smaller unit of time. HOUR is a smaller field than DAY_OF_MONTH. No adjustment is made to smaller fields that are not expected to be invariant. The calendar system determines what fields are expected to be invariant.

  11. #11
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Par défaut
    Tu peux nous dire ce que tu veux faire exactement avec tes dates ?
    Tu veux quoi à partir de quoi ?

  12. #12
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    la ce que tu fais c une soustraction de la partie milliseconde des deux dates...

    A mon avis c pas ce que tu veux.


    @+

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 22
    Par défaut
    J'en suis au point 3) de mon premier post.


    Voila ce que je fais maiantenant :
    Je récupère une date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendar datedebut = Calendar.getInstance();
    je la passe en session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.setAttribute("sessiontest.datedebut", datedebut);
    Je récupère une deuxième date dans une autre page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendar datefin = Calendar.getInstance();
    et je récupère ma première date(qui est en session)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendar datedebut = (Calendar)session.getAttribute("sessiontest.datedebut");
    Maintenant, je voudrais soustraire datedebut à datefin mais je n'arrive pas à faire fonctionner la fonction add.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datefin.Add(datefin.get(Calendar.MILLISECOND),-(datedebut.get(Calendar.MILLISECOND)));

  14. #14
    Membre expérimenté
    Inscrit en
    Mars 2004
    Messages
    377
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 377
    Par défaut
    Tu dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datefin.Add(Calendar.MILLISECOND,-(datedebut.get(Calendar.MILLISECOND) );
    Voili, voilou,
    8)

  15. #15
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    Calendar toto = Calendar.getInstance();
    toto.setTimeInmillis(dateFin.getTimeInMillis() - dateDebut.getTimeInMillis());
    voila toto c'est ta différence sous forme de Calendar.

    Tous en sachant que ca va te donner une date relative au 1 janvier 1970 qui est la base du gregorian calendar.

    @+

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 22
    Par défaut
    De mon coté, j'ai fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    datefin.add(Calendar.MILLISECOND,-(datedebut.get(Calendar.MILLISECOND)));	
    datefin.add(Calendar.SECOND,-(datedebut.get(Calendar.SECOND)));datefin.add(Calendar.MINUTE,-(datedebut.get(Calendar.MINUTE)));	
    datefin.add(Calendar.HOUR_OF_DAY,-(datedebut.get(Calendar.HOUR_OF_DAY)));	
    datefin.add(Calendar.DAY_OF_MONTH,-(datedebut.get(Calendar.DAY_OF_MONTH)));	
    datefin.add(Calendar.MONTH,-(datedebut.get(Calendar.MONTH)));	
    	datefin.add(Calendar.YEAR,-(datedebut.get(Calendar.YEAR)));
    Et j'obtient ma différence tant recherché.

    Merci à tous et j'èspère que cela servira au génération future

  17. #17
    Membre émérite
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Par défaut
    Oui ca fonctionne aussi mais ca genere plus de code.

    Néanmoins ca n'utilise que des API en cours (non depecated) donc c préférable.

    Un ptt tag resolu stp (bouton en bas a gauche).

    @+

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 22
    Par défaut
    c'est fais!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSP] Date et heure fixe (dynamique)
    Par sihamnet dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 28/04/2012, 17h30
  2. Date et opérations
    Par flim dans le forum Modules
    Réponses: 7
    Dernier message: 16/01/2006, 09h40
  3. [JSP] date locale
    Par clems34 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 29/09/2005, 10h23
  4. [JSP] inverser une date
    Par logica dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 12/05/2005, 15h20
  5. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45

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