Problèmes avec Date Format String et bien plus encore...

Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011 - 4 mai 2004 à 10:55
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011 - 3 juin 2004 à 09:01
:question) Bonjour,
je débute en programmation objet et je butte sur un problème très simple. Prenons une date, par exemple aujourd'hui, j'arrive obtenir quelque chose qui ressemble à cela:
Tus 4 May CEST 2004 10:50:47.
J'aimerais obtenir pour cet exemple un String ou un Long ressemblant à:
20040504105047, ou toutes les valeurs sont mises à la queue-leu-leu sous forme "décroissante".
(Tout çà pour faire de la transmission de donnée en UDP et un jour peut-être avec de genre de truc, remplir une base de données Oracle, et pis surtout que j'y connais rien à Oracle ?-) ).

D'avance, merci. :)

Signé: Egalon qui comprend difficilement

24 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
4 mai 2004 à 11:37
Salut,

la classe java.text.SimpleDateFormat est ton ami !!!

String dateToutCollé=new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
4 mai 2004 à 13:51
CA MAAAAAAAAARCHE!!!! :big)
Merci Kirua12. ;)
En plus c tout facile à faire 8-) .
Me doutais bien que ça devait exister... J'aurais seulement passé des jours dessus.

Par contre si t'as 2sec. pour me dire pour les class DEPRECATED. J'ai vu sur le forum mais j'ai pas trop saisi.
Je souhaite juste savoir si c'est grave de les utiliser (compiler avec javac -deprecation) et ce que ça fait...

Signé: Egalon qui comprend difficilement
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
4 mai 2004 à 13:57
Quand une méthode ou une classe est deprecated cela signifie qu'il ne faut plus l'utiliser. L'API est en cours de changement ou a changé et cette méthode ou classe n'en fait plus partie (pour quelque raison que ce soit : mauvaise implémentation, changement d'organisation ou autre).
Pour garder la compatibilité avec l'ancien code on les laisse mais en les marquant comme "à ne plus utiliser". Les nouveaux programmes ne doivent pas utilsier de telles méthodes ou classes.
Ce n'est pas grave en soit car ça compile et ça marche dans la plupart des cas mais il vaut mieux ne plus les utiliser. Celles ci peuvent disparaitre à tout moment...
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
4 mai 2004 à 17:02
OK merci
:)
Signé: Egalon qui comprend difficilement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
12 mai 2004 à 10:53
Comment dire :question) :question) :question)
Bien que ca marche,....
.... ben ca marche pas. %-6
Sur mon joli petit pc (tout pourri, je précise >:) ) ça fonctionne super bien. MAIS (ben oui, y a toujours un MAIS dans l'histoire...) sur le module (ports RS, RJ, i/o analogiques et binaires) qui est censé accueillir le programme, ca plante sec et net. J'ai envoyé un mail au fabricant décrivant précisément la chose et ....
... pas de nouvelles. :(
Tout ce blabla juste pour demander s'il y a un autre moyen d'obtenir le meme résultat. :-p

Signé: Egalon qui comprend difficilement
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
13 mai 2004 à 09:19
qu'est ce qui plante ? La méthode format ou ce que tu fais avec ?
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
24 mai 2004 à 09:23
Ben tout plante... J'ai accès à rien quand le prog tourne sur la carte.
mon petit prog c'est çà:

import java.util.*;
import java.lang.*;
import java.text.*;

class TestDate
{

public static void main(String[] args)
{
System.out.println("Running....");

String dateToutColle=new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());

System.out.println(dateToutColle);

}
}


Pis après compilation sans erreur, je mets le prog sur la carte et je le lance et j'obtiens:
Running...
Running...
Running...
Running...
etc...
Le prog tourne mais plante au niveau de la date. Je ne sais pas quoi faire.

Signé: Egalon qui comprend difficilement
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
24 mai 2004 à 10:39
apparemment ce serait SimpleDateFormat qui ne serait pas digéré...
Signé: Egalon qui comprend difficilement
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
1 juin 2004 à 16:53
Ca y est, j'ai des nouvelles du fabricant :big) . Je dois importer ça dans mes programmes qui utilise des calendriers:
gnu.java.locale.Calendar
gnu.java.locale.Calendar_en
gnu.java.locale.LocaleInformation
gnu.java.locale.LocaleInformation_en_US
gnu.java.locale.LocaleInformation_en_GB

Ben,.... :sad) sauf que la classe gnu.java.locale.Calendar
par exemple, ben... elle a aucune méthode ou field qui me donne le jour ou le mois %-6 ...

Donc: je cris A L'AIDE!!!

Merci à ceux qui ont pitié de moi.

Signé: Egalon qui comprend difficilement
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
1 juin 2004 à 17:03
peux tu me donner un lien où je peux trouver ces librairies ? J'ai bien trouvé qqchose mais je suis pas sûr que ce soit ça.
Il t'a expliqué pourquoi tu devais utiliser ces classes plutôt que celles du JDK ?
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
1 juin 2004 à 17:36
Voila le lien demandé par mon SAUVEUR:

ftp://ftp.gnu.org/gnu/classpath/classpath-0.09.tar.gz

Par contre pour ta question, je suis sans réponse. Je pense que la carte que j'utilise doit se fonder la-dessus..
Signé: Egalon qui comprend difficilement
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
1 juin 2004 à 17:46
J'oubliais: maintenant, les programmes ne plante plus sec et net. J'ai de joli messages d'erreurs :big) que j'ai beaucoup du mal pour comprendre à piger :shy) !!! En voilà un exemple:
java.util.MissingResourceException: Bundle gnu.java.locale.LocaleInformation not
 found
        at dateIPJV.main([Ljava/lang/String;)V
        at java/text/SimpleDateFormat.(Ljava/lang/String;)V
        at java/text/SimpleDateFormat.(Ljava/lang/String;Ljava/util/Locale
;)V
        at java/text/DateFormatSymbols.(Ljava/util/Locale;)V
        at java/util/ResourceBundle.getBundle(Ljava/lang/String;Ljava/util/Local
e;)Ljava/util/ResourceBundle;
        at java/util/ResourceBundle.getBundle(Ljava/lang/String;Ljava/util/Local
e;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle;
        at java/util/MissingResourceException.(Ljava/lang/String;Ljava/lan
g/String;Ljava/lang/String;)V


Si t'y comprends plus à piger que moi ( ce qui n'est pas difficile, je crois), je peux te montrer le code qui me vomit gentillement ce poème (cà y est je craque dur, 18h approchent :-p ).
En gros c'est lorsque j'essaie de créer une simpledateformat, et si je comprends suffisamment, il plante parce qu'il trouve pas d'information sur mon locale. J'ai alors essayé (je dis bien "essayé" :clown) ) de déclarer une type Locale fr. En vain, j'obtiens toujours le même poème.

Je sais c'est long pour un petit complément.
:)
Signé: Egalon qui comprend difficilement
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
1 juin 2004 à 17:54
pour ton pb, après une recherche rapide sur google, c'est la liaison dynamique qui a du mal.
Pour forcer la liaison, il faut que tu ajouter des variables dans ta classe du type nécessaires :
Il faut ajouter :
private static Class c1 = gnu.java.locale.Calendar.class;
private static Class c2 = java.util.GregorianCalendar.class;
private static Class c3 = gnu.gcj.convert.Input_ASCII.class;
private static Class c4 = gnu.gcj.convert.Input_UTF8.class;
private static Class c5 = gnu.gcj.convert.Input_8859_1.class;
private static Class c6 = gnu.java.locale.LocaleInformation.class;
private static Class c7 = gnu.gcj.convert.Output_ASCII.class;
private static Class c8 = gnu.java.locale.Calendar_en.class;
private static Class c9 = gnu.java.locale.Calendar_en_US.class;

Pour info voici les liens

http://www.xwt.org/javasrc/org/xwt/plat/GCJ_java.html
http://gcc.gnu.org/ml/gcc-bugs/2003-11/msg02323.html
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
1 juin 2004 à 18:48
J'ai beau déclarer
gnu.java.locale.Calendar maintenant = gnu.java.locale.Calendar.getInstance();
ou
c1 maintenant = c1.getInstance();
aucun des 2 ne passe

c1 maintenant = c1.getInstance(); ne passe pas à la compil
et
gnu.java.locale.Calendar maintenant = gnu.java.locale.Calendar.getInstance();
fait que je n'ai pas accès aux méthodes Calendar.get(...)

Je dirais que les classes GNU sont des extensions des classes SUN. Parce que par exemple
gnu.java.locale.Calendar ne contient pas les fields et méthodes de java.util.calendar. Mais je sais pas si on peut signaler au compilateur de suppléer une classe.

On continuera ça demain.

Merci pour tout.

Signé: Egalon qui comprend difficilement
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
2 juin 2004 à 11:18
Donc me REVOILOU!!!
:big) Désolé ca marche toujours pas...

Je poursuis donc sur ma dernière remarque de hier soir:

L'important dans ce prog, ce n'est pas le fait d'espérer qu'un jour il fonctionne :blush) , c'est le fait que je n'ai pas accès à
maintenant.get(...); Ce qui semble normal puisque la class
gnu.java.locale.Calendar ne contient pas de méthode get (donc je m'affolle, c'est normal que çà plante). Donc forcément, la compilation ne passe pas. Alors :question) Me direz-vous... Ben je me dis la même chose... Alors :question) Ben à quoi ça sert d'avoir un calendrier si on peut pas le lire.

import java.io.* ;
import java.lang.*;
import java.util.*;
import java.net.*;
import java.text.*;
import gnu.java.locale.Calendar;
import gnu.java.locale.Calendar_en;
import gnu.java.locale.LocaleInformation;
import gnu.java.locale.LocaleInformation_en_US;
import gnu.java.locale.LocaleInformation_en_GB;

public class dateIPJV
 {
  public static void main (String[] aArg)
 {
 	int i=0;
 try {
 gnu.java.locale.Calendar maintenant = new gnu.java.locale.Calendar();
 System.out.println("ergz1");
 //gnu.java.locale.LocaleInformation_fr_FR

  //SimpleDateFormat truc = new SimpleDateFormat("yyyyMMddHHmmss");
 //int truc=  now.get(gnu.java.locale.Calendar.YEAR);
 //Date maintenant = new Date(System.currentTimeMillis());
int [] table = new int[6];
 	table[5] = maintenant.get(1); 
table[4] = maintenant.get(2);
table[3] = maintenant.get(3);
table[2] = maintenant.get(4);
table[1] = maintenant.get(5);
table[0] = maintenant.get(6);
  String dateToutColle = "";
for (i=0;i<6;i++)
{ dateToutColle =  Integer.toString(table[i]) + dateToutColle  ;
  if (dateToutColle.length()%2 == 1)
                    dateToutColle = "0" + dateToutColle;
} 

 System.out.println(dateToutColle);
  } catch (Throwable ee) { ee.printStackTrace(System.err); }
 }
}


Voilà j'espère que ma prose te plait, j'essaie d'être agréable à lire voire même, de ne pas faire de fautes.
Je conclue ce message en revenant sur cette question débile: A quoi sert un GNU calendar si je peux pas le lire? (J'ai envoyé le même genre de question au fabricant ce matin).
J'en conclue donc que le GNU calendar devrait completer le SUN calendar et non le remplacer.

Signé: Egalon qui comprend difficilement
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
2 juin 2004 à 14:06
T'avais raison ;) pour:
private static Class c1 = gnu.java.locale.Calendar.class;
Il faut l'ajouter sinon le prog plante et affiche:

java.util.MissingResourceException: Bundle gnu.java.locale.Calendar not found
        at TestDate.main([Ljava/lang/String;)V
        at DateString.Ladate()Ljava/lang/String;
  .........


Par contre quand je le mets, le programme ne plante plus pareil... Avant j'attrapais l'exception avec:
catch (Throwable ee) { ee.printStackTrace(System.err); }

et maintenant, je dois en avoir une autre... Je sais pas comment faire pour savoir c'est quoi ni comment attraper tout type exception.

Signé: Egalon qui comprend difficilement
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
2 juin 2004 à 14:26
en faisant un catch (Throwable) comme tu le fais tu devrais catcher toutes les erreurs possibles vu que c'est la classe de base.
Normalement le compilo te dit si tu n'as pas catché une exception ou si l'erreur survient à l'exécution tu as l'exception dans le message d'erreur.
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
2 juin 2004 à 15:10
J'ai presque du nouveau, j'arrive à attraper :

java.lang.NoClassDefFoundError: gnu/java/locale/Calendar
        at TestDate.main([Ljava/lang/String;)V
        at TestDate.<clinit>()V
        at TestDate.class$(Ljava/lang/String;)Ljava/lang/Class;
        at java/lang/NoClassDefFoundError.(Ljava/lang/String;)V

lorsque je lance :

import java.text.*;
import java.util.*;
import java.lang.*;

import gnu.java.locale.Calendar;
import gnu.java.locale.Calendar_en;
import gnu.java.locale.LocaleInformation;
import gnu.java.locale.LocaleInformation_en_US;
import gnu.java.locale.LocaleInformation_en_GB;

class TestDate
{	private static Class c1 = gnu.java.locale.Calendar.class;
private static Class c2 = gnu.java.locale.Calendar_en.class;
private static Class c3 = gnu.java.locale.LocaleInformation_en_US.class;
private static Class c7 = gnu.java.locale.LocaleInformation_en_GB.class;
private static Class c6 = gnu.java.locale.LocaleInformation.class;

public static void main(String[] args)
{
try{
System.out.println("eguhzeiuh");
//System.out.println(DateString.Ladate());
Date madate = new Date();
System.out.println(madate.toString());
} catch (Throwable ee) { ee.printStackTrace(System.err); }
} 
}


Remarquons que je n'obtiens même pas l'affichage
System.out.println("eguhzeiuh");

Signé: Egalon qui comprend difficilement
0
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
2 juin 2004 à 15:18
Je fais juste une petite précision:
Le problème que je viens de citer juste avant ne dépend pas des fonctions utilisées, je viens de tester cela en mettant n'importe quoi comme fonction "basique" et j'obtiens bien la même erreur. Donc c'est bien lié à la recherche des classes et non aux méthodes utilisées.

Signé: Egalon qui comprend difficilement
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
2 juin 2004 à 15:29
t'as dû oublier d'ajouter le jar dans le classpath
0
Rejoignez-nous