Ce code permet d'obtenir :
- le jour de la semaine;
- le jour;
- le mois;
- l'année;
- l'heure;
- les minutes;
- les secondes;
- un javax.swing.Timer qui appelle une méthode à chaque seconde (voir commentaires et exemple).
Source / Exemple :
import java.util.*;
import java.awt.event.*;
import java.lang.reflect.*;
public class CurrentTime {
/********* EXEMPLE ******************************************
class la_classe {
public la_classe {
timer = (new CurrentTime()).watchTime(this,"nom_de_methode");
}
public void nom_de_methode(Object o) {
String js = CurrentTime.parseWatchTimeResult(o,CurrentTime.WEEK_DAY);
String j = CurrentTime.parseWatchTimeResult(o,CurrentTime.DAY);
String mo = CurrentTime.parseWatchTimeResult(o,CurrentTime.MONTH);
String a = CurrentTime.parseWatchTimeResult(o,CurrentTime.YEAR);
String h = CurrentTime.parseWatchTimeResult(o,CurrentTime.HEURE);
String m = CurrentTime.parseWatchTimeResult(o,CurrentTime.MIN);
String s = CurrentTime.parseWatchTimeResult(o,CurrentTime.SEC);
String ampm = CurrentTime.parseWatchTimeResult(o,CurrentTime.AM_PM);
System.out.println(js+" le "+j+" "+mo+", "+a+" - "+h+":"+m+":"+s+" "+ampm);
}
javax.swing.Timer timer = null;
}
public CurrentTime() {
}
// obtenir le jour de la semaine (ex: lundi, mardi, etc)
public String getJourSemaine() {
GregorianCalendar c = new GregorianCalendar();
return parseJourSemaine(c.get(WEEK_DAY));
}
// obtenir le jour du mois
public int getJour() {
GregorianCalendar c = new GregorianCalendar();
return c.get(DAY);
}
// obtenir le mois (ex: janvier, février, etc)
public String getMois() {
GregorianCalendar c = new GregorianCalendar();
return parseMois(c.get(MONTH));
}
// obtenir l'année
public int getAnnee() {
GregorianCalendar c = new GregorianCalendar();
return c.get(YEAR);
}
// obtenir l'heure
public int getHeure() {
GregorianCalendar c = new GregorianCalendar();
int result = c.get(HEURE);
if (getAMPM().equals("PM"))
result += 12;
return result;
}
// obtenir le nombre de minutes
public int getMinutes() {
GregorianCalendar c = new GregorianCalendar();
return c.get(MIN);
}
// obtenir le nombre de secondes
public int getSecondes() {
GregorianCalendar c = new GregorianCalendar();
return c.get(SEC);
}
// obtenir AM si c'est le matin, sinon PM
public String getAMPM() {
GregorianCalendar c = new GregorianCalendar();
return parseAMPM(c.get(AM_PM));
}
/*
appeller à chaque seconde une méthode choisi, dans une classe choisi, et envoyer
dans l'argument de la méthode le temps. utilisez parseWatchTimeResult pour savoir
ce que l'objet "Object" de la méthode contient.
Pour un exemple, voir la méthode "main".
arguments:
- Object o : la classe contenant la méthode à appeller
- String methodToCall : la méthode à appeller à chaque seconde.
format de la méthode: public void methodeToCall(Object obj) {}
retourne un javax.swing.Timer
public javax.swing.Timer watchTime(final Object o,final String methodToCall) {
javax.swing.Timer timer = null;
ActionListener timerTask = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
Class[] paramTypes = new Class[] {Object.class};
Method method = o.getClass().getMethod(methodToCall, paramTypes);
Object[] arguments = new Object[]{getJourSemaine()+"$"+getJour()+"|"+getMois()+"%"+getAnnee()+"&"+getHeure()+":"+getMinutes()+":"+getSecondes()+"#"+getAMPM()};
method.invoke(o, arguments);
}
catch (Exception e) {
System.err.println(e);
}
}
};
timer = new javax.swing.Timer(1000,timerTask); // 1000 milliseconde = 1 seconde
timer.start();
return timer;
}
/*
obtenir le résultat voulue dans la méthode qui est appellé à chaque seconde dans
watchTime(Object,String).
arguments:
- Object o: l'objet de l'argument de methodToCall
- int field: un des fields (le choix est situé en bas de la classe CurrentTime)
public static String parseWatchTimeResult(Object o,int field) {
String s = (String)o;
if (field == WEEK_DAY)
s = s.substring(0,s.indexOf("$"));
if (field == DAY)
s = s.substring(s.indexOf("$")+1,s.indexOf("|"));
if (field == MONTH)
s = s.substring(s.indexOf("|")+1,s.indexOf("%"));
if (field == YEAR)
s = s.substring(s.indexOf("%")+1,s.indexOf("&"));
if (field == HEURE) {
s = s.substring(s.indexOf("&")+1,s.indexOf(":"));
if (Integer.parseInt(s) < 10)
s = "0"+s;
}
if (field == MIN) {
s = s.substring(s.indexOf(":")+1,s.lastIndexOf(":"));
if (Integer.parseInt(s) < 10)
s = "0"+s;
}
if (field == SEC) {
s = s.substring(s.lastIndexOf(":")+1,s.indexOf("#"));
if (Integer.parseInt(s) < 10)
s = "0"+s;
}
if (field == AM_PM)
s = s.substring(s.indexOf("#")+1,s.length());
return s;
}
/*******************************************************/
/**** PRIVATES *****************************************/
/*******************************************************/
// obtenir un format visuel de GregorianCalendar.get(GregorianCalendar.AM_PM)
private static String parseAMPM(int i) {
if (i == 0)
return "AM";
return "PM";
}
// obtenir un format visuel de GregorianCalendar.get(GregorianCalendar.DAY_OF_WEEK)
private static String parseJourSemaine(int i) {
if (i == GregorianCalendar.MONDAY)
return "Lundi";
if (i == GregorianCalendar.TUESDAY)
return "Mardi";
if (i == GregorianCalendar.WEDNESDAY)
return "Mercredi";
if (i == GregorianCalendar.THURSDAY)
return "Jeudi";
if (i == GregorianCalendar.FRIDAY)
return "Vendredi";
if (i == GregorianCalendar.SATURDAY)
return "Samedi";
if (i == GregorianCalendar.SUNDAY)
return "Dimanche";
return "<parse error: debug id "+i+">";
}
// obtenir un format visuel de GregorianCalendar.get(GregorianCalendar.MONTH)
private static String parseMois(int i) {
if (i == GregorianCalendar.JANUARY)
return "Janvier";
if (i == GregorianCalendar.FEBRUARY)
return "Février";
if (i == GregorianCalendar.MARCH)
return "Mars";
if (i == GregorianCalendar.APRIL)
return "Avril";
if (i == GregorianCalendar.MAY)
return "Mai";
if (i == GregorianCalendar.JUNE)
return "Juin";
if (i == GregorianCalendar.JULY)
return "Juillet";
if (i == GregorianCalendar.AUGUST)
return "Août";
if (i == GregorianCalendar.SEPTEMBER)
return "Septembre";
if (i == GregorianCalendar.OCTOBER)
return "Octobre";
if (i == GregorianCalendar.NOVEMBER)
return "Novembre";
if (i == GregorianCalendar.DECEMBER)
return "Décembre";
return "<parse error: debug id "+i+">";
}
// les fields
public static final int WEEK_DAY = GregorianCalendar.DAY_OF_WEEK;
public static final int DAY = GregorianCalendar.DAY_OF_MONTH;
public static final int MONTH = GregorianCalendar.MONTH;
public static final int YEAR = GregorianCalendar.YEAR;
public static final int HEURE = GregorianCalendar.HOUR;
public static final int MIN = GregorianCalendar.MINUTE;
public static final int SEC = GregorianCalendar.SECOND;
public static final int AM_PM = GregorianCalendar.AM_PM;
}
Conclusion :
si vous voyez un truc qui cloche, dit le ! ^^
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.