[JAVA] Problème de date

Résolu
valentin2703 Messages postés 185 Statut Membre -  
valentin2703 Messages postés 185 Statut Membre -
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 185 Statut Membre 9
 
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 165 Statut Membre 15
 
Qu'est ce que sa donne quand tu récupères la date stockée dans le fichier?
0
valentin2703 Messages postés 185 Statut Membre 9
 
Je veut récupérer que le jours,
Donc ça donne :
11
0
valentin2703 Messages postés 185 Statut Membre 9
 
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
 
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 185 Statut Membre 9
 
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 282 Statut Membre 33
 
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 185 Statut Membre 9
 
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 282 Statut Membre 33
 
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 185 Statut Membre 9
 
Avec la commande que je fait, j'extrait déja le jour ;)
0
malaik5 Messages postés 282 Statut Membre 33
 
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 185 Statut Membre 9
 
Merci pour ta solution, je te tien au courant demain matin ;D
0