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

  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU]J2ME et la génération de timestamp...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]J2ME et la génération de timestamp...

n°1922312
limp15000
www.geneva-racing.ch
Posté le 08-09-2009 à 17:49:39  profilanswer
 

Messieurs bonsoirs,
 
Je me permet de venir vers vous... Je développe une appli J2me pour Nokia.  
J'ai un problème bizarre que je n'arrive pas à résoudre.
 
Voici ce qu'il se passe :  

Code :
  1. e_trspDate = new DateField("Time and Date *:", DateField.DATE_TIME, TimeZone.getTimeZone("GMT" ));
  2.         e_trspDate.setDate(currentTime);


Jusque là tout va bien, le mobile m'affiche bien la date et l'heure du moment.  
Je veux ensuite le transformer en timestamp pour l'envoyer dans une BDD.  
 

Code :
  1. long n_trspDate = e_trspDate.getDate().getTime();


 
Mais en gros ça me donne pas un timestamp.
Quelqu'un sait comment je dois procéder ? J'ai googlé un bon moment... et rien trouvé de concluant...


Message édité par limp15000 le 17-09-2009 à 13:45:08
mood
Publicité
Posté le 08-09-2009 à 17:49:39  profilanswer
 

n°1922398
cbeyls
Hail to the King, Baby
Posté le 09-09-2009 à 03:16:53  profilanswer
 

Ton code a l'air correct. Si tu n'obtiens pas un timestamp, qu'est-ce que tu obtiens exactement en retour?

n°1922905
limp15000
www.geneva-racing.ch
Posté le 10-09-2009 à 11:28:17  profilanswer
 

J'ai une suite de chiffre qui correspondent à une date en 1958... C'est bizarre...

n°1922930
cbeyls
Hail to the King, Baby
Posté le 10-09-2009 à 12:59:22  profilanswer
 

En 1958 ça m'étonnerais, vu que le timestamp 0 correspond à Epoch (1er janvier 1970). Quand tu crées un objet Date à partir d'un Timestamp, la date est forcément plus récente que Epoch.

n°1923001
limp15000
www.geneva-racing.ch
Posté le 10-09-2009 à 16:03:06  profilanswer
 

Justement... Donc c'est pour ça que je vois pas le rapport... Vais refaire des tests au bureau demain...

n°1923859
limp15000
www.geneva-racing.ch
Posté le 14-09-2009 à 11:33:09  profilanswer
 

Bon j'ai refait un essai. J'ai mis comme date le 16 septembre à 10h.  
Et voici l'entrée que j'ai dans la BDD :  
2147483647
2147483647 translates to Tuesday, January 19th 2038, 03:14:07 (GMT)
C'est bizarre...

n°1923943
cbeyls
Hail to the King, Baby
Posté le 14-09-2009 à 14:55:38  profilanswer
 

Bon et quand tu débugges, tu as quelle valeur pour le Timestamp généré depuis l'horloge (currentTime), quelle valeur avant insertion dans la BDD (n_trspDate) et quelle valeur après insertion? Cela devrait être les mêmes. Si non, ça te permettra de voir quelle opération change la valeur.


Message édité par cbeyls le 14-09-2009 à 14:56:27
n°1923994
limp15000
www.geneva-racing.ch
Posté le 14-09-2009 à 16:44:43  profilanswer
 

Quand je débug c'est pareille... Lors de l'initialisation de la variable j'ai 1253112180000 et dans ma requête d'insertion pareille...  
Casse pied cette histoire... J'ai le problème dans le Wireless toolkit et sur mon mobile...

n°1924100
cbeyls
Hail to the King, Baby
Posté le 14-09-2009 à 22:36:54  profilanswer
 

Ok j'ai compris, en fait tu insères un long (64 bits) dans ta base de données et tu reçois en retour un int (32 bits) !
 
Je ne sais pas ce que tu utilises comme base de données mais assure-toi que la colonne te permette de stocker des valeurs de 64 bits. En tous les cas ton problème se situe au niveau du code qui communique avec la base de données ou de la base de données elle-même.

n°1924592
limp15000
www.geneva-racing.ch
Posté le 16-09-2009 à 17:55:43  profilanswer
 

Ben c'est une base MySQL... Et effectivement c'est un INT de 11 dans le champ...  
Je vais regarder de ce côté là, mais ça me semble très logique comme explication. Je te tiens au courant du résultat...
 
Edit : Donc au fait le script PHP qui récupère la valeur doit convertir ce quelle reçoit en int avant l'insertion dans la BDD. Correct ?


Message édité par limp15000 le 16-09-2009 à 17:58:46
mood
Publicité
Posté le 16-09-2009 à 17:55:43  profilanswer
 

n°1924601
cbeyls
Hail to the King, Baby
Posté le 16-09-2009 à 18:26:21  profilanswer
 

Je pensais que ton appli J2ME stockait la date localement sur le téléphone.
 
Maintenant je ne sais pas quel chemin tu fais faire à ta donnée mais il faut que sur tout le chemin la donnée reste au format original, un long. Au niveau MySQL un long ça se stocke dans un champ BIGINT et pas INT. Tu dois modifier ta base de données et surtout pas convertir les 64 bits en 32 sinon tu perds l'information.


Message édité par cbeyls le 16-09-2009 à 18:34:49
n°1924603
souk
Tourist
Posté le 16-09-2009 à 18:32:00  profilanswer
 

et tant qu'a faire, un timestamp, tu le mets dans une colonne de type .... timestamp [:dawa]

n°1924605
cbeyls
Hail to the King, Baby
Posté le 16-09-2009 à 18:38:18  profilanswer
 

Je ne me risquerais pas à convertir la valeur en Timestamp MySQL. Je crois que MySQL les stocke sur 32 bits seulement donc c'est incompatible par défaut. Stocke la valeur dans un BIGINT ça sera plus simple.

n°1924722
limp15000
www.geneva-racing.ch
Posté le 17-09-2009 à 09:51:26  profilanswer
 

Good morning, je vais vous donner un peu plus de détails. Donc j'ai une appli mobile J2me qui permet d'envoyer des annonces sur un site web.  
J'ai créer un champ date pour que le tel affiche un calendrier. C'est cette date que j'essai de transformer en timestamp.  
ensuite l'appli J2ME fait une requête avec les infos en GET vers un script PHP qui insère la valeur dans la base MySQL.
J'ai maintenant mis le champ en question en BIGINT mais ça ne change strictement rien.  
Dois je faire une manip en PHP pour avoir un timestamp valable ?  
Désolé pour toutes ces questions mais je sèche un peu :P

n°1924751
cbeyls
Hail to the King, Baby
Posté le 17-09-2009 à 11:00:11  profilanswer
 

Désolé mais sans le code difficile de deviner l'erreur :) Donc tu as ta valeur 64-bits du coté java, tu dois débugger jusqu'à trouver l'endroit où elle est transformée en 32-bit. Regarde du coté PHP si ton script reçoit la bonne valeur, regarde juste avant insertion dans la base si c'est toujours la bonne valeur... en tous cas si tu as mis un champ BIGINT c'est impossible que mysql détruise ta valeur.

n°1924769
limp15000
www.geneva-racing.ch
Posté le 17-09-2009 à 11:30:47  profilanswer
 

Ok je vais décrire mon test.
Première étape :  
Je rempli les champs de l'annonce et je saisi la date du 23 septembre à 9h19.
Cette date correspond à un timestamp de : 1253697984
Voici le timestamp envoyé à ma base de donnée :  
1253697593046
 
Voici la valeur stocké dans la BDD : 1253697593046
Donc la même.  
Arf, maintenant mon but c'est de savoir comment "convertir" cette valeur? Car là avec mes fonctions PHP ça correspond à une date loufoque.  
J'espère avoir été clair et un grand merci pour ton aide !

n°1924799
limp15000
www.geneva-racing.ch
Posté le 17-09-2009 à 13:44:42  profilanswer
 

J'ai trouvé la solution... Ca n'avait rien avoir avec du 32 ou 64 bit...  
Il semblerait que les téléphones génére des timestamp en millième de seconde...  
En PHP la norme c'est plutôt la seconde..
Du coup si on divise le timestamp envoyé par Java par 1000  et qu'on l'arrondit on obtient la bonne valeur ;)  
Ouf...

n°1924876
cbeyls
Hail to the King, Baby
Posté le 17-09-2009 à 16:59:10  profilanswer
 

Ben oui un Timestamp Java c'est en millisecondes sur 64 bits, ça a toujours été comme ça. C'est juste un nombre, tu aurais pu le stocker tel quel dans ta base de données dans un BIGINT, ça aurait fonctionné aussi! Sauf si évidemment avant de le stocker tu faisais des opérations de date/heure dessus en PHP. En PHP les fonctions travaillent avec un timestamp Unix stocké sur 32 bits avec une précision de l'ordre de la seconde. Ceux-ci expirent en 2038.


Message édité par cbeyls le 17-09-2009 à 17:07:14
n°1924930
limp15000
www.geneva-racing.ch
Posté le 17-09-2009 à 21:15:24  profilanswer
 

Ben je le savais pas ;)
Je débute en Java...  
Merci encore


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

  [RESOLU]J2ME et la génération de timestamp...

 

Sujets relatifs
[Résolu]pb compilation operator ++[RESOLU]Limiter le nombre de résultats d'un fichier xml
[Résolu] problème de CSS sur un menu[Résolu] Macro excel pour tri tableau par semaine
Problème nl2br ? [résolu][Résolu] Gestion des plantages
Produit matriciel avec Mysql [Résolu][Résolu] Fuite mémoire, que libérer ?
[RESOLU]Arrondi à partir d'une chaine de caractère[résolu][Velocity & Hudson] Templates non copiés dans le classpath
Plus de sujets relatifs à : [RESOLU]J2ME et la génération de timestamp...


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