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

Collection et Stream Java Discussion :

Exploitation de GregorianCalendar, Date dans une couche DAO


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut Exploitation de GregorianCalendar, Date dans une couche DAO
    Bonjour a tous !

    Voila, je post ici ne trouvant pas d'autres informations utiles dans les Faq, j'espere que vous pourrez m'aidez (j'ai plus fait de java depuis une bonne annee mais enfin ca reviens vite...).

    En preambule:

    je realise donc une application Java qui exploite une base MySQL (voila pour l'environnement). La partie visuelle sera realise en JSF via Java Studio Creator mais pour l'heure je bute sur l'implementation et la gestion des dates dans ma couche DAO (je ne sais pas encore faire d'EJB mais je souhaite tout de meme ne pas confier a creator le soin de gerer l'acces aux donnees et prefere le deleguer a une couche DAO independante...

    Dans les faits
    Dans les classes qui gere mon implementation SQL pour MySQL, je souhaite que java genere une date de creation et une date de derniere modification que j'integre a mon PreparedStatement pour les stockées dans la base. Comme le besoin de date se presente dans toutes mes classe, j'ai cru bon d'implementer une classe specialisee qui me retournerai des dates et me permettrai de faire des calcul sur ces dates.

    Cette classe herite de GregorianCalendar car j'ai vu que nombre de methodes de la classe util.Date sont deprecated mais je bute sur la maniere exact d'utiliser cet objet. je voudrai surtout eviter du gaspillage en declarant des proprietes inutile. avez vous des exemples de calendar ou de gestion de date interressante dans cette situation...

    merci !! et JOYEUX NOEL A TOUS !!

    WDionysos

  2. #2
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut personne pour le calendar !!
    bonjour !

    personne ne travailles la nuit, ah bon !!!

    Non, sans deconne j'ai trouvé des post sur le forum qui donne des element mais qui ne m'aide pas totalement. j'ai vraiment un pb de methodes je pense.

    une precision supplementaire me viens : le prog est une appli web dans un premier temps accessible dans toute l'europe du nord et du centre, puis apres tout l'international, quel pb dois je envisager a propos du fuseau horaire, s'agit t-il de celui du serveur ou changera t-il en fonction des parametres horaire de l'utilisateur (ce qui pourrait poser un pb de chronologie) merci !!


    wdionysos

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 857
    Points
    1 857
    Par défaut
    J'ai eu aussi quelques problèmes. Le principal est de comprendre la différence entre date et calendrier : date est l'instant, le calendrier est sa repésentation. Un peu de la même façon que binaire / hexadécimal etc... ne sont que des représentations d'un même nombre. Une date est un instant T, mais l'année qui lui correspond dépend du calendrier utilisé (grégorien, chinois, etc) même si il s'agit du même instant. Il faut donc dabord créer une date, puis un calendrier pour en extraire jour, mlois, année.

    La date retournée est celle où s'exécute le programme Java, c'est à dire probablement sur le serveur. Si vous voulez gérer les fuseaux horaires, il faudra le faire manuellement et détecter celui de l'utilisateur.

  4. #4
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut re
    Merci BugFactory

    j'ai compris bien des chose grace a ton explication et je t'en remercie, un point demeure :

    Il faut donc dabord créer une date, puis un calendrier pour en extraire jour, mlois, année.
    car j'avais cru comprendre que l'appel au constructeur par defaut GregorianCalendar() fournissait un Calendrier gregorien initialise avec la date actuelle.

    mon code est celui ci (javabean) :

    public class sundate extends GregorianCalendar implements Serializable {

    //declaration de proprietes
    private GregorianCalendar calendar;
    private String year;
    private String month;
    private String day;
    private String hour;
    private String minute;
    private String second;
    private String daynumber;
    private Timestamp timestamp;
    private Date date;

    //declaration des methodes

    //constructeurs

    public sundate() {
    super();
    // TODO Auto-generated constructor stub
    this.calendar = new GregorianCalendar();
    this.date = getGregorianChange();

    }

    // suivi de Getter and Setter Access method
    apparament eclipse accepte cela en precompil

    est ce correct pour atteindre mon objectif???

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    949
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 949
    Points : 1 857
    Points
    1 857
    Par défaut
    API a écrit:
    getGregorianChange

    public final Date getGregorianChange()

    Gets the Gregorian Calendar change date. This is the point when the switch from Julian dates to Gregorian dates occurred. Default is October 15, 1582. Previous to this, dates will be in the Julian calendar.

    Returns:
    the Gregorian cutover date for this calendar.
    A votre place, j'essaierai plutôt getTime().

  6. #6
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut merci bug
    je viens de voir ton conseils,

    mais deja apres une partie de nuit blanche , j'avais opte pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                           if (info.getCredateparty() != null) {
    				calendar = new GregorianCalendar();
    				ps.setDate(12,new Date(calendar.getTimeInMillis()));
    			} else {
    				calendar = new GregorianCalendar();
    				calendar.setTime(info.getCredateparty());
    				ps.setDate(12,new Date(calendar.getTimeInMillis()));
    			}
    alors c'est vrai je me demande toujours si j'ai besoin d'un calendrier, mysql lui ne veut qu'une date, il dois y avoir plus simple et moins couteux en memoire mais enfin la ca marche pour la version 1 du soft.

    j'ai conscience que je prend un calendar pour le transformer en Long puis en long puis en date mais Java accepte pour le moment

    je suis ouvert a toute optimisation de ce bout de code car vraiment je deteste gerer les Dates ca me fait vieillir prematurement

    WDio

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par BugFactory
    J'ai eu aussi quelques problèmes. Le principal est de comprendre la différence entre date et calendrier : date est l'instant, le calendrier est sa repésentation. Un peu de la même façon que binaire / hexadécimal etc... ne sont que des représentations d'un même nombre. Une date est un instant T, mais l'année qui lui correspond dépend du calendrier utilisé (grégorien, chinois, etc) même si il s'agit du même instant. Il faut donc dabord créer une date, puis un calendrier pour en extraire jour, mlois, année.

    La date retournée est celle où s'exécute le programme Java, c'est à dire probablement sur le serveur. Si vous voulez gérer les fuseaux horaires, il faudra le faire manuellement et détecter celui de l'utilisateur.
    Bonjour, c'est mon 1er post et j'ai "un peu" le même genre de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //je crée un TimeZone
    SimpleTimeZone pdt = new SimpleTimeZone(rawOffset,ID,startMonth,startDay,startDayOfWeek,startTime,startTimeMode,endMonth,endDay,endDayOfWeek,endTime,endTimeMode,dstSavings);
     
    GregorianCalendar cal=new GregorianCalendar(pdt);
    Date a = cal.getTime();
    Pourquoi ma date ne correspond pas à la date que j'aurai dû avoir avec mon TimeZone ?
    J'ai lu ce que vous disiez concernant les relations Date <---> calendar

    Mais comment faire pour récuperer une Date à partir du GregorianCalendar (avec le TimeZone) afin d'avoir une date correspondant à mon fuseau horaire ? (là je récupère tout le temps mon heure courante système et non pas celle avec le decalage)

    Merci d'avance

  8. #8
    Membre habitué Avatar de wdionysos
    Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 222
    Points : 189
    Points
    189
    Par défaut timezone
    salut !

    l'objet Date (qui etait peu evolue, c'est la raison pour laquelle sun a introduit le java.util.Calendar qui est une classe abstraite et le GregorianCalendar qui herite de Calendar est qui est l'implementation la plus utilise (sauf si ton prog travaille avec des dates anterieur a 1582) .)

    Aussi Timezone n'est pas pas lie a l'objet Date mais il peut servir a initialise un calendar comme le propose un des constructeurs de la classe GregorianCalendar :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public GregorianCalendar(Timezone)
    en appellant ce constructeur et en lui passant ta zone en parametre tu initialise un nouveau calendrier sur la timezone.

    ensuite avec celui ci (calendrier) tu peux generer des Dates, des Timestamps, des suites d'entier (annee, mois etc..)

    c'est ton premier post alors bienvenu dans la communaute de devellopez, ce site a mon avis te sera tres utile et regorge de personnes tres competentes.

    sinon je te conseille de recopier ton message dans un nouveau post car comme tu le vois j'ai passer celui ci a "resolu" donc il y a de forte chance que peu de gens vienne voir ici et que ceux qui y sont venu ont arreter de surveiller ce sujet (par mail), ce qui n'etait pas mon cas

    si tu donnes plus de detail sur ton prob dans ce nouveau posst, je serai heureux de tenter de t'aider mais j'avoue que je galere un peu moi meme avec la gestion du temps et j'ai opter pour mon prob a la solution de faciliter (tout transformer en timestamp dans mon appli et ma base )

    cela dis pour la zone j'ai fait une tentative qui a l'air probante et qui est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private final TimeZone ZONE = TimeZone.getTimeZone("fr_LU_EURO");
    //ca c'est ma zone
    ........
    calendar  = new GregorianCalendar(ZONE);//
    		epochtime = new Long(calendar.getTimeInMillis());
    		timestamp = new Timestamp(epochtime.longValue());
    et ca me donne
    la valeur de calendar est :
    la zone est : sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
    Timestamp : 2006-01-09 22:15:03.187
    Epochtime : 1136841303187
    date util : Mon Jan 09 22:15:03 CET 2006
    bien sur tu peux defenir davantage ta timezone

    WDionysos

  9. #9
    Futur Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Re: timezone
    Citation Envoyé par wdionysos
    salut !

    l'objet Date (qui etait peu evolue, c'est la raison pour laquelle sun a introduit le java.util.Calendar qui est une classe abstraite et le GregorianCalendar qui herite de Calendar est qui est l'implementation la plus utilise (sauf si ton prog travaille avec des dates anterieur a 1582) .)

    Aussi Timezone n'est pas pas lie a l'objet Date mais il peut servir a initialise un calendar comme le propose un des constructeurs de la classe GregorianCalendar :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public GregorianCalendar(Timezone)
    en appellant ce constructeur et en lui passant ta zone en parametre tu initialise un nouveau calendrier sur la timezone.

    ensuite avec celui ci (calendrier) tu peux generer des Dates, des Timestamps, des suites d'entier (annee, mois etc..)

    c'est ton premier post alors bienvenu dans la communaute de devellopez, ce site a mon avis te sera tres utile et regorge de personnes tres competentes.

    sinon je te conseille de recopier ton message dans un nouveau post car comme tu le vois j'ai passer celui ci a "resolu" donc il y a de forte chance que peu de gens vienne voir ici et que ceux qui y sont venu ont arreter de surveiller ce sujet (par mail), ce qui n'etait pas mon cas

    si tu donnes plus de detail sur ton prob dans ce nouveau posst, je serai heureux de tenter de t'aider mais j'avoue que je galere un peu moi meme avec la gestion du temps et j'ai opter pour mon prob a la solution de faciliter (tout transformer en timestamp dans mon appli et ma base )

    cela dis pour la zone j'ai fait une tentative qui a l'air probante et qui est celle ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private final TimeZone ZONE = TimeZone.getTimeZone("fr_LU_EURO");
    //ca c'est ma zone
    ........
    calendar  = new GregorianCalendar(ZONE);//
    		epochtime = new Long(calendar.getTimeInMillis());
    		timestamp = new Timestamp(epochtime.longValue());
    et ca me donne
    la valeur de calendar est :
    la zone est : sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
    Timestamp : 2006-01-09 22:15:03.187
    Epochtime : 1136841303187
    date util : Mon Jan 09 22:15:03 CET 2006
    bien sur tu peux defenir davantage ta timezone

    WDionysos
    Merci pour ta réponse !
    j'ai calé ma question dans un nouveau post

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

Discussions similaires

  1. insertion d'un type date dans une table access
    Par monstour dans le forum ASP
    Réponses: 7
    Dernier message: 18/06/2004, 16h57
  2. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25
  3. insérer une date dans une table mssql
    Par ericmart dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/01/2004, 10h37
  4. test la valeur d'une date dans une requete
    Par TuxP dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/01/2004, 14h53
  5. Transformation de date dans une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/10/2003, 11h31

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