Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
989 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Deux Dates du même jour

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Deux Dates du même jour

n°1476376
TomZ
Posté le 16-11-2006 à 14:05:02  profilanswer
 

Bonjour à tous  :hello: ,
Je voudrais vous poser une question concernant la comparaison de deux dates en java.
Je voudrais savoir si deux dates (format YYYY-MM-DD hh:mm:ss) appartiennent au même jour.
Les méthodes getYear() getMonth() et getDay() fonctionnent mais elles marchent également pour deux dates si les deux dates ont 7 jours d'écart (c'est à dire si je compare en somme le 15/11/2006 et le 8/11/2006).
Pourriez-vous m'indiquer une autre méthode ?
 
Merci par avance

mood
Publicité
Posté le 16-11-2006 à 14:05:02  profilanswer
 

n°1476378
kadreg
profil: Utilisateur
Posté le 16-11-2006 à 14:06:28  profilanswer
 

TomZ a écrit :


Les méthodes getYear() getMonth() et getDay() fonctionnent mais elles marchent également pour deux dates si les deux dates ont 7 jours d'écart (c'est à dire si je compare en somme le 15/11/2006 et le 8/11/2006).


 
[:pingouino] ?


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°1476379
lorill
Posté le 16-11-2006 à 14:06:50  profilanswer
 

getDay() renvoie le jour de la semaine. C'est getDate() que tu cherches :
http://java.sun.com/j2se/1.4.2/doc [...] #getDate()
 
mais c'est déprécié, donc passe par un Calendar, ca sera mieux.

n°1476381
kadreg
profil: Utilisateur
Posté le 16-11-2006 à 14:07:52  profilanswer
 

http://java.sun.com/j2se/1.3/docs/ [...] l#getDay()
 
ah oui, logique :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°1476390
MagicBuzz
Posté le 16-11-2006 à 14:13:30  profilanswer
 

sinon, euh...
pkoi ne pas simplement tronquer la date pour ne récupérer que yyyy-mm-dd et comparer si elles sont égales ?
 
sinon, une simple conversion en entier de l'objet date OLE (si java n'est pas trop pourri ça doit exister) te permettra d'isoler la partie "date" de ton objet.
donc tu pourras faire l'égalité sans problème.
 
la dernière solution, même si elle semble un peu sale, est la plus propre et la plus performante, puisque tu bosses directement avec la représentation physique de la date (la plupart des plateformes utilisent la représentation OLE pour les dates), sans avoir à faire des traîtements complexes
 
en gros, en .NET ça donne ça :
 
Code :

Code :
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. namespace ConsoleApplication1
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             DateTime dte1 = DateTime.Now;
  11.             DateTime dte2 = DateTime.Now.AddHours(4);
  12.             Console.WriteLine("Date 1 : " + dte1.ToString());
  13.             Console.WriteLine("Date 2 : " + dte2.ToString());
  14.             Console.WriteLine("OLE Date 1 : " + dte1.ToOADate().ToString());
  15.             Console.WriteLine("OLE Date 2 : " + dte2.ToOADate().ToString());
  16.             Console.WriteLine("INT OLE Date 1 : " + ((int)dte1.ToOADate()).ToString());
  17.             Console.WriteLine("INT OLE Date 2 : " + ((int)dte2.ToOADate()).ToString());
  18.             Console.WriteLine("Date 1 == Date 2 : " + (dte1 == dte2).ToString());
  19.             Console.WriteLine("OLE Date 1 == OLE Date 2 : " + (dte1.ToOADate() == dte2.ToOADate()).ToString());
  20.             Console.WriteLine("INT OLE Date 1 == INT OLE Date 2 : " + ((int)dte1.ToOADate() == (int)dte2.ToOADate()).ToString());
  21.             Console.ReadKey();
  22.         }
  23.     }
  24. }


 
Sortie :


Date 1 : 11/16/2006 2:22:52 PM
Date 2 : 11/16/2006 6:22:52 PM
OLE Date 1 : 39037.5992162153
OLE Date 2 : 39037.7658828819
INT OLE Date 1 : 39037
INT OLE Date 2 : 39037
Date 1 == Date 2 : False
OLE Date 1 == OLE Date 2 : False
INT OLE Date 1 == INT OLE Date 2 : True

Message cité 1 fois
Message édité par MagicBuzz le 16-11-2006 à 14:24:55
n°1476392
lorill
Posté le 16-11-2006 à 14:16:42  profilanswer
 

mais nan :fou:

n°1476394
kadreg
profil: Utilisateur
Posté le 16-11-2006 à 14:17:15  profilanswer
 

MagicBuzz a écrit :


sinon, une simple conversion en entier de l'objet date (si java n'est pas trop pourri ça doit marcher) te permettra d'isoler la partie "date" de ton objet.
donc tu pourras faire l'égalité sans problème.


 
 [:rotflmao]  [:vomi]


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°1476399
souk
Tourist
Posté le 16-11-2006 à 14:18:50  profilanswer
 

[:pingouino]

n°1476409
brisssou
8-/
Posté le 16-11-2006 à 14:25:33  profilanswer
 

http://forum-images.hardware.fr/themes_static/images_forum/1/flag1.gif
 
edit : pour être constructif, jakarta.apache.org/commons propose un CommonsLang avec DateUtils.isSameDay()


Message édité par brisssou le 16-11-2006 à 14:28:20

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1476412
MagicBuzz
Posté le 16-11-2006 à 14:26:02  profilanswer
 

désolé, mais ça marche parfaitement, et c'est infiniment moins lourd que faire successivement des getdate() et autres 25 fois de suite pour finir avec 50 tests d'égalité :spamafote:
 
quand au format OLE pour les dates, c'est le format natif pour la plupart des plateformes, même Linux a laissé tombé le timestamp d'unix si je ne m'abuse
 
-- hé bé... je viens de jeter un oeil à la doc java... qu'est-ce que c'et pauvre comme langage... même les libs natives du C permettent de gérer les dates mieux que ça :sweat: --


Message édité par MagicBuzz le 16-11-2006 à 14:46:38
mood
Publicité
Posté le 16-11-2006 à 14:26:02  profilanswer
 

n°1476421
TomZ
Posté le 16-11-2006 à 14:31:18  profilanswer
 

getDate() impec merci

n°1476489
TomZ
Posté le 16-11-2006 à 15:10:39  profilanswer
 

Avec Class GregorianCalendar c'est encore mieux c'est pas deprecated :)

n°1476491
souk
Tourist
Posté le 16-11-2006 à 15:12:33  profilanswer
 

sinon pour etre plus constructif que le pingouino que j'ai poste, pour les dates en Java, Joda Time roxor [:dawa]

n°1476501
brisssou
8-/
Posté le 16-11-2006 à 15:16:52  profilanswer
 

Calendar à la place de GregorianCalendar


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
n°1476920
the real m​oins moins
Posté le 17-11-2006 à 01:05:18  profilanswer
 

joda-time, evidemment :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1481129
TheRom_S
Posté le 24-11-2006 à 08:45:38  profilanswer
 

tiens le .NET ça me rappelle une situation olé-olé ou j'ai dû me farcir tout le code source pour changer toutes les gestions de dates qui foiraient après une migration d'un server avec locale européenne vers américaine, 9/11 c'est bien le 11 septembre non ?


---------------
The Rom's, à votre service
n°1481222
MagicBuzz
Posté le 24-11-2006 à 11:57:45  profilanswer
 

31/12/2006 = français et anglais
12/31/2006 = américain
 
en fait, c'est ça le plus chiant. parceque quand t'as que la locale générique "en", tu sais pas comment interpréter les dates :D
 
le mieux étant de travailler sous un des formats suivants :
 
int64 : format UNIX (millisecondes depuis chais plus quand)
float : format Microsoft/OLE (partie entière : nb jours depuis le 01/01/0001 et partie décimale = faction du jour)
YYYYMMDD H24:MI:SS : Format ISO chais plus combien, reconnu en natif par la plupart des SGBD et langages.
YYYY-MM-DD H24:MI:SS : format ISO chais plus combien, utilisé par le XML.
DD.MM.YYYY : format allemand, avec les "." comme séparateur, les dates ne peuvent être formatées que dans ce sens, donc pas de confusion possible.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Deux Dates du même jour

 

Sujets relatifs
Mise à jour d'une combobox[PHP] Formatage des dates
sommer des datesprobleme de update - Mysql - Pas de misa a jour
Date du 1er jour d'une semaine donnée[Oracle] Optimisation d'une requête de mise à jour
Obtenir le Jour sous Dos[algo java] Calcul de jour ouvrables (dates)
jour par mois entre deux dates[Perl] Nombre de jour entre 2 dates
Plus de sujets relatifs à : Deux Dates du même jour


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR