Bonjour,
Je m'adresse à vous pour avoir des informations sur les différents opérateurs mathématiques en JAVA.
J'ai du faire des calculs pour réveiller des threads et comparer des dates d'une base de donnée par rapport à la date courant pour migrer des requètes d'une base à une autre... globalement c'est le contexte de mon problème.
Le problème vient en fait je pense de ma facon de faire pour additionner / multiplier des nombres entre eux.
Voici un bout de code qui retire normalement 30 jours à la date courante, le premier affiche correctement :
long toto = (long) 30*(24*3600*1000);
long myDateLimitInMillis = System.currentTimeMillis()-toto;
System.out.println("Temps avant : "+System.currentTimeMillis());
System.out.println("Temps a enlever : "+toto);
System.out.println("Temps apres : "+myDateLimitInMillis);
java.sql.Timestamp myTS = new java.sql.Timestamp(myDateLimitInMillis);
java.sql.Timestamp today = new java.sql.Timestamp(System.currentTimeMillis());
System.out.println(myTS.toString());
System.out.println("Today = "+today.toString());
Seulement au départ j'avais la même chose mais sans caster mon premier calcul :
long toto = 30*(24*3600*1000);
long myDateLimitInMillis = System.currentTimeMillis()-toto;
System.out.println("Temps avant : "+System.currentTimeMillis());
System.out.println("Temps a enlever : "+toto);
System.out.println("Temps apres : "+myDateLimitInMillis);
java.sql.Timestamp myTS = new java.sql.Timestamp(myDateLimitInMillis);
java.sql.Timestamp today = new java.sql.Timestamp(System.currentTimeMillis());
System.out.println(myTS.toString());
System.out.println("Today = "+today.toString());
Je demande donc à ceux qui le peuvent d'exécuter ces deux bout de code java afin qu'ils puissent voir d'eux même que dans ce deuxieme code, la variable toto contient parfois un nomvre négatif, parfois pas, selon que l'on varie le calcul...
Je voulais comprendre d'ou cela pouvait venir, je pensais au fait que le chiffre obtenu apres calcul était un nombre avec un bit signé devant, ce qui faisait apparaitre un signe - au niveau du texte et qui était donc mal inteprété, mais je n'en suis pas sur...
De même, j'ai résolu mon probleme en castant le résultat (premier code), mais connaitriez vous une autre méthode pour effectuer ce même calcul, à savoir, retirer 30 jours de la date courante.
Merci de votre patience :)

