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

Langage Java Discussion :

Problème lié aux dates


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut Problème lié aux dates
    Bonjour,

    Je récupère la date sytème avec ses heures, minutes, secondes :
    Date datesysteme = new Date();

    Comment la réduire à la date du jour à 00:00:00 ?

    Merci de votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    A part la mise à zéro "manuelle", je ne vois pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    datesysteme.setHours(0);
    datesysteme.setMinutes(0);
    datesysteme.setSeconds(0);
    Ceci dit, je me demande pourquoi tu veux remettre l'heure à zéro... Qui peut le plus peut le moins, si tu n'as pas besoin de l'heure ça ne te coûtera pas plus de la fournir quand même puisqu'elle est de toute façon comprise dans l'objet Date, voire ça te coûtera moins de traitement puisque tu économises la "mise à zéro" de l'heure Enfin, c'est toi qui sais ce que tu veux faire dans ton appli

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Je prends peut être le problème à l'envers !

    J'ai la date de création d'un fichier X.
    Et je veux m'assurer que ce fichier n'est pas du jour.

    Je pensais donc déterminé la date système à 00:00:00 pour tester les deux dates.

    Je suis preneur de toutes solutions pouvant atteindre ce résultat.

    Merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Astartee ton code réalise parfaitement ce que je veux. Merci.

    Seule remarque, eclipse me signale "The method setHours(int) from the type date is deprecated". Idem pour setMinutes et setSeconds.

    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
    		String fichierSurveiller = "c:\\rapport.txt"; 
    		File fichierSurveiller0 = new File( fichierSurveiller );
    		if (fichierSurveiller0.exists())
    		{
    			long dateFichierSurveiller = fichierSurveiller0.lastModified(); 	// date fichier à surveiller (epoch)
    			Date datesysteme = new Date(); 
    			datesysteme.setHours(0);
    			datesysteme.setMinutes(0);
    			datesysteme.setSeconds(0);
    			long datesysteme0 = datesysteme.getTime(); 		// date système (epoch)
    			long ecart = datesysteme0 - dateFichierSurveiller;			// ecart en millisecondes
    			if (ecart> 0)
    			{
    				System.out.println(ecart + " : Date du Fichier surveiller antérieur à la date du jour");
    			}
    			else
    			{
    				System.out.println(ecart + " : Date du Fichier surveiller postérieur à la date du jour");
    			}
    		}
    A priori, l'aternative est à chercher de ce coté là : "Create a java.util.GregorianCalendar object and use its setters and getters instead."

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    oui, tu utilise GregorianCalendar, car les méthodes de Date ne gèrent que la Locale "système", ce qui la rend imprécise.

    Pour le traitement des date, l'api jodatime est aussi assez courrement suggérée sur ce forum, pour sa simplicité.

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 764
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par shibo Voir le message
    J'ai la date de création d'un fichier X. Et je veux m'assurer que ce fichier n'est pas du jour.
    Je pensais donc déterminé la date système à 00:00:00 pour tester les deux dates.
    Si tu veux utiliser les fonctions de comparaison de la classe Date, alors comme la comparaison prend en compte l'heure (et les minutes et les secondes...) tu as effectivement raison de vouloir mettre l'heure à zéro.

    Citation Envoyé par shibo Voir le message
    Seule remarque, eclipse me signale "The method setHours(int) from the type date is deprecated". Idem pour setMinutes et setSeconds.
    Ah tiens ? Eclipse ne m'a rien dit à moi
    Dans ce cas, oui, va voir du côté du Calendar, ce n'est pas beaucoup plus compliqué, et il faudra encore mettre l'heure à zéro "à la main".

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    J'arrive bien a mettre 0 mais, pour le moment, je bloque sur la conversion en epoch !

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    calendar.getTimeInMillis()

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    un grand merci à vous deux.

    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
    		String fichierSurveiller = "c:\\rapport.txt"; 
    		File fichierSurveiller0 = new File( fichierSurveiller );
    		if (fichierSurveiller0.exists())
    		{
    			long dateFichierSurveiller = fichierSurveiller0.lastModified(); 	// date fichier à surveiller (epoch)
    			GregorianCalendar datesysteme = new java.util.GregorianCalendar(); // Remplace Date datesysteme = new Date(); 
    			datesysteme.set(GregorianCalendar.HOUR,0); // Remplace datesysteme.setHours(0);
    			datesysteme.set(GregorianCalendar.MINUTE,0); // Remplace datesysteme.setMinutes(0);
    			datesysteme.set(GregorianCalendar.SECOND,0); // Remplace datesysteme.setSeconds(0);
    			datesysteme.set(GregorianCalendar.MILLISECOND,0); // Ajout
    			long datesysteme0 = datesysteme.getTimeInMillis(); // Remplace long datesysteme0 = datesysteme.getTime(); 		// date système (epoch)
    			long ecart = datesysteme0 - dateFichierSurveiller;			// ecart en millisecondes
    			if (ecart> 0)
    			{
    				System.out.println(ecart + " : Date du Fichier surveiller antérieur à la date du jour");
    			}
    			else
    			{
    				System.out.println(ecart + " : Date du Fichier surveiller postérieur à la date du jour");
    			}
    		}
    PS : j'ai un autre cas sans aucune piste, si vous en avez une, n'hésitez pas à me la fournir. MERCI MERCI http://www.developpez.net/forums/d65...e/#post3832358

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 32
    Points : 17
    Points
    17
    Par défaut
    Si vous voulez que cela fonctionne l'après midi, ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ds.set(GregorianCalendar.AM_PM,0); // Ajout

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

Discussions similaires

  1. problème relatif aux dates
    Par Doopeijii dans le forum Langage
    Réponses: 10
    Dernier message: 06/04/2012, 16h21
  2. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12
  3. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30
  4. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18
  5. Interbase - dbExpress -> problème avec les dates
    Par marghett dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 03h55

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