[JAVA] Problème de date

Résolu/Fermé
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 - Modifié par valentin2703 le 11/04/2011 à 10:27
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 - 12 avril 2011 à 09:15
Bonjour,

J'ai un petit problème avec l'utilisation de la Date en java. Alors en faite je sais comment récupérer la date qui m'intéresse avec mon programme Java :

String format = "dd";
SimpleDateFormat formater = new java.text.SimpleDateFormat( format );
Date date = new Date();
System.out.println( formater.format( date ) );

Ce petit bout de code me permet de récupérer le Jours du PC.
Le seul problème c'est que je voudrais qu'une variable jours (Allant de 1 à 90) s'incrémente de 1 à chaque fois qu'il y a un nouveau jours.
Si le programmes tournés en boucle ça ne serait pas trop dur, mais mon programme est démarré à intervalles réguliers (Environ toutes les 5 minutes).

PS : Cette variable jours va me permettre de changer de base de donnée SQL tous les jours (Pour évité une surcharge de cette Base, vu le nombre de valeurs que je doit gérer)

Donc si vous avez des idées, merci de m'aider =)



A voir également:

2 réponses

valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
Modifié par valentin2703 le 11/04/2011 à 13:46
Un p'ti coup de main ? :D

Je viens aussi d'essayer de stocker la date que je récupère (Au lancement précédent du programme) dans un fichier texte, pour pouvoir la comparer à la valeur qu'on obtient au nouveau lancement du programme. Mais j'ai bien l'impression que ça ne mène à rien :s
0
sakoba2010 Messages postés 157 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 24 juillet 2013 15
11 avril 2011 à 14:13
Qu'est ce que sa donne quand tu récupères la date stockée dans le fichier?
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
Modifié par valentin2703 le 11/04/2011 à 14:30
Je veut récupérer que le jours,
Donc ça donne :
11
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
Modifié par valentin2703 le 11/04/2011 à 14:31
En gros je veut que ça charge le fichier, compare le jours récupéré à celui du moment. Et si le jours du moment est plus grand que celui charger alors je voudrait implémenter une variable Jours de 1.
Et il faut que sa puisse faire sa tout les jours ^^"
0
Utilisateur anonyme
11 avril 2011 à 22:06
Salut,

C'est ce que je t'aurais proposé...

Tu peux nous montrer le code de la création avant la sortie du programme et le code de la lecture lors du nouveau lancement ?

Dan
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
Modifié par valentin2703 le 12/04/2011 à 08:53
Bonjour Danimo.

Bien sur je te montre mon code.
J'ai fait quelque chose qui devrai marcher, mais il faut croire que non, vu que ma variable jours ne s'incrémente pas quand l'ancien jours est plus petit que le nouveau (Pour l'instant je test avec des minutes :p)
J'ai bien l'impression que j'ai un problème avec la lecture, parceque toute la partie dans le "while" ne s'exécute pas

import java.util.*; 
import java.io.*; 
import java.text.*; 

public class Test{ 
  
 public static void main(String[] args){ 
    
  String filePath = "Date.txt"; 
  PrintWriter ficOut; 
  int jours = 0; 
    
  String format = "mm"; 
  SimpleDateFormat formater = new java.text.SimpleDateFormat( format ); 
  Date date = new Date(); 
  String a = formater.format(date); 
  int i = Integer.parseInt(a); 
  System.out.println(i); 
   
  try{ 
   BufferedReader in = new BufferedReader(new FileReader(filePath)); 
   ficOut = new PrintWriter(new BufferedWriter(new FileWriter(filePath))); 
    
   try{ 
    String line; 
    while((line = in.readLine()) != null){ 
     System.out.println(line); 
     int b = Integer.parseInt(line); 
     if(b < i){ 
      jours++; 
     } 
    } 
    System.out.println(jours); 
    in.close(); 
    ficOut.write(a); 
    ficOut.close(); 
   } 
   catch(IOException e){ 
    System.out.println(e.getMessage()); 
    System.exit(1); 
   } 
  } 
  catch(IOException e){ 
   System.out.println(e.getMessage()); 
   System.exit(1); 
  } 
 } 
}
0
malaik5 Messages postés 258 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 28 novembre 2013 33
11 avril 2011 à 14:48
Salut,
pourquoi ne pas récuperer la date du systeme au démarrage de ton programme java,
comme ça quelque soit le jour ou tu démarre ton programme il pointera toujours vers la date du systeme, pas besoin de faire des calculs ni quoi que ce soit et meme si tu ne demarre ton programme qu'apres 20jours il prendra toujours la date du systeme,
Et celà est faisable en utilisant ce bout de code:
java.util.Date uDate = new java.util.Date();
java.sql.Date sDate = new java.sql.Date(System.currentTimeMillis());

/*
* Conversion entre les 2 types de dates
*/
sDate = new java.sql.Date(uDate.getTime());
uDate = new java.util.Date(sDate.getTime());

Essayes le et tiens moi au courant.
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
11 avril 2011 à 14:56
Si j'ai bien compris, tes lignes de code vont me permettre de récupérer la date du jours ?

Moi le problème c'est que je ne peut pas créer autan de tables SQL qu'il y a de jours, sinon ça me ferait déjà 365 tables en 1ans ^^.

Le but est donc de faire des tables numérotés de 1 à 90, comme ça je stock mes données sur 3 mois glissants (Si on arrive à 3 mois alors la première valeurs de la première table est effacée)
0
malaik5 Messages postés 258 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 28 novembre 2013 33
11 avril 2011 à 15:01
au fait le bout de code te permet de recuperer la date du systeme apres c'est à toi de prendre l'information pertinente pour toi (dans ton cas c'est le jour, dsl j'ai pas de compilateur java devant moi sinon j'aurais fait ça et j'aurais exrtait le jour)
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
11 avril 2011 à 17:08
Avec la commande que je fait, j'extrait déja le jour ;)
0
malaik5 Messages postés 258 Date d'inscription vendredi 20 novembre 2009 Statut Membre Dernière intervention 28 novembre 2013 33
11 avril 2011 à 17:18
tu dis que ton programme dmarreà intervalle régulier (chaque 5min) OK,
ce que tu fais,

tu prend un compteur i = 0
tu prends un variable temporaire, tu lui affectes la valeur de ton jour,
à la prochaine execution de ton programme (tu recupere le plus normalement ta variable date), tu compare la variable temporaire à cette nouvelle variable date,
si c'est egal tu laisse tomber (t'as pas changer de jour), sinon tu incrémente ton compteur i, et tu affecte la nouvelle valeur de date à la variable temporaire
et tu teste la varibale i si elle egale à 90 ou pas

voilà une piste pour faire avancer ton boulot

Il faut bien noter que ce principe marche qaund ton programme demare chaque 5mn sinon il faut changer un peu le principe c'est tous
0
valentin2703 Messages postés 180 Date d'inscription dimanche 30 janvier 2011 Statut Membre Dernière intervention 30 septembre 2012 9
11 avril 2011 à 18:29
Merci pour ta solution, je te tien au courant demain matin ;D
0